Part Number Hot Search : 
R1660CT 2SK41 AN1406D TC401 MUR1010E 03A0397M LPC4330 AN8036L
Product Description
Full Text Search
 

To Download 82371AB Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  e 4/9/97 2:23 pm piix4ads intel confidential (until publication date) ? intel corporation 1997 april 1997 order number: 290562-001 supported kits for both pentium ? and pentium ? ii microprocessors ? ? 82430tx isa kit ? ? 82440lx isa/dp kit multifunction pci to isa bridge ? ? supports pci at 30 mhz and 33 mhz ? ? supports pci rev 2.1 specification ? ? supports full isa or extended i/o (eio) bus ? ? supports full positive decode or subtractive decode of pci ? ? supports isa and eio at 1/4 of pci frequency supports both mobile and desktop deep green environments ? ? 3.3v operation with 5v tolerant buffers ? ? ultra-low power for mobile environments support ? ? power-on suspend, suspend to ram, suspend to disk, and soft- off system states ? ? all registers readable and restorable for proper resume from 0.v suspend power management logic ? ? global and local device management ? ? suspend and resume logic ? ? supports thermal alarm ? ? support for external microcontroller ? ? full support for advanced configuration and power interface (acpi) revision 1.0 specification and os directed power management integrated ide controller ? ? independent timing of up to 4 drives ? ? pio mode 4 and bus master ide transfers up to 14 mbytes/sec ? ? supports ? ultra dma/33 ? synchronous dma mode transfers up to 33 mbytes/sec ? ? integrated 16 x 32-bit buffer for ide pci burst transfers ? ? supports glue-less ? swap-bay ? option with full electrical isolation enhanced dma controller ? ? two 82c37 dma controllers ? ? supports pci dma with 3 pc/pci channels and distributed dma protocols (simultaneously) ? ? fast type-f dma for reduced pci bus usage interrupt controller based on two 82c59 ? ? 15 interrupt support ? ? independently programmable for edge/level sensitivity ? ? supports optional i/o apic ? ? serial interrupt input timers based on 82c54 ? ? system timer, refresh request, speaker tone output usb ? ? two usb 1.0 ports for serial transfers at 12 or 1.5 mbit/sec ? ? supports legacy keyboard and mouse software with usb-based keyboard and mouse ? ? supports uhci design guide smbus ? ? host interface allows cpu to communicate via smbus ? ? slave interface allows external smbus master to control resume events real-time clock ? ? 256-byte battery-back cmos sram ? ? includes date alarm ? ? two 8-byte lockout ranges microsoft win95* compliant 324 mbga package 82371AB pci-to-isa / ide xcelerator (piix4)
82371AB (piix4) e 2 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary the 82371AB pci isa ide xcelerator (piix4) is a multi-function pci device implementing a pci-to-isa bridge function, a pci ide function, a universal serial bus host/hub function, and an enhanced power management function. as a pci-to-isa bridge, piix4 integrates many common i/o functions found in isa-based pc systems ? two 82c37 dma controllers, two 82c59 interrupt controllers, an 82c54 timer/counter, and a real time clock. in addition to compatible transfers, each dma channel supports type f transfers. piix4 also contains full support for both pc/pci and distributed dma protocols implementing pci-based dma. the interrupt controller has edge or level sensitive programmable inputs and fully supports the use of an external i/o advanced programmable interrupt controller (apic) and serial interrupts. chip select decoding is provided for bios, real time clock, keyboard controller, second external microcontroller, as well as two programmable chip selects. piix4 provides full plug and play compatibility. piix4 can be configured as a subtractive decode bridge or as a positive decode bridge. this allows the use of a subtractive decode pci-to-pci bridge such as the intel 380fb pciset which implements a pci/isa docking station environment. piix4 supports two ide connectors for up to four ide devices providing an interface for ide hard disks and cd roms. up to four ide devices can be supported in bus master mode. piix4 contains support for ? ultra dma/33 ? synchronous dma compatible devices. piix4 contains a universal serial bus (usb) host controller that is universal host controller interface (uhci) compatible. the host controller?s root hub has two programmable usb ports. piix4 supports enhanced power management, including full clock control, device management for up to 14 devices, and suspend and resume logic with power on suspend, suspend to ram or suspend to disk. it fully supports operating system directed power management via the advanced configuration and power interface (acpi) specification. piix4 integrates both a system management bus (smbus) host and slave interface for serial communication with other devices. information in this document is provided in conjunction with intel products. no license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted by this document or by the sale of intel products. except as provided in intel?s terms and conditions of sale for such products, intel assumes no liability whatsoever, and intel disclaims any express or implied warranty, relating to sale and/or use of intel products including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright or other intellectual property right. intel products are not intended for use in medical, life saving, or life sustaining applications. intel retains the right to make changes to specifications and product descriptions at any time, without notice. the 82371AB piix4 may contain design defects or errors known as errata. current characterized errata are available on request. intel disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this specification. intel does not warrant or represent that such use will not infringe such rights. i2c is a two-wire communication bus/protocol developed by philips. smbus is a subset of the i2c bus/protocol and was developed by intel. implementation of the i2c bus/protocol or the smbus bus/protocol may require licenses from various entities, including philips electronics n.v. and north american philips corporation. third-party brands and names are the property of their respective owners.
e 82371AB (piix4) 3 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary pcicl k ad[31:0] c/be[3:0]# frame# trdy# irdy# stop# devsel# serr# par idsel phold# phlka# clkr un# rcin# pwrok cpurst rstdrv init pcirst# irq0//gpo14 irq8#/gpi6 irq12/m intr nmi irq[15,14,11:9,7:3,1] serirq/gpi7 priq[a:c] pirqd irq9out#/gpo29 smi# stpclk# extsmi# slp# susclk batlow#/gpi9 thrm#/gpi8 lid//gpi10 ri#/gpi12 rsmrst# pwrbtn# susa# susb#/gpo15 susc#/gpo16 zz/gpo19 pcireq[d:a]# spkr osc dreq[7:5,3:0] dack[7:5,3:0]# tc refresh# req[a:c]#/gpi[2:4] gnt[a:c]#/gpo[9:11] clk48 usbpo usbp1 oc[1:0]# config[2:1] test# pci bus interface isa bus interface system reset interrupt primary ide interface secondary ide interface system power mgmt. x-bus support logic timers/ counters dma i/o apic support logic universal serial bus rtc smbus general purpose inputs and outputs test sd[15:0] iocs16# memcs16# memr# memw# aen iochrdy iochk#/gpi0 sysclk bale ior# iow# smemr# smemw# zerows# sa[19:0] la[23:17]/gpo[7:1] sbhe# pdcs1# pdcs3# pda[2:0] pdd[15:0] pddack# pddreq pdioir# pdiow# piordy sdcs1# sdcs3# sda[2:0] sdd[15:0] sddack# sddreq sdior# sdiow# siordy pcs[1:0]# xdir#/gpo22 xoe#/gpo23 rtcale/gpo25 ferr# ignne# bioscs# rtccs#/gpo24 kbccs#/gpo26 a20m# a20gate mccs# apiccs#/gpo13 apicack#/gpo12 apcireq#/gpi5 rtcx[2:1] smbalert# smbclk smbdata gpi[21:13,1] gpi[12:2,0] (multiplexed) gpo[30,28:27,8,0] gpo[29,26:9,7:1] (multiplexed) pix4_blk simplified block diagram
82371AB (piix4) e 4 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary contents page 1.0. architectural overview ................................ ................................ ................................ .................... 12 2.0. signal description ................................ ................................ ................................ ................................ 15 2.1. piix4 signals ................................ ................................ ................................ ................................ .............. 16 2.1.1. pci bus interface ................................ ................................ ................................ ................................ . 16 2.1.2. isa bus interface ................................ ................................ ................................ ................................ . 18 2.1.3. x-bus interface ................................ ................................ ................................ ................................ .... 21 2.1.4. dma signals ................................ ................................ ................................ ................................ ........ 23 2.1.5. interrupt controller/apic signals ................................ ................................ ................................ ......... 24 2.1.6. cpu interface signals ................................ ................................ ................................ ......................... 26 2.1.7. clocking signals ................................ ................................ ................................ ................................ .. 28 2.1.8. ide signals ................................ ................................ ................................ ................................ .......... 28 2.1.9. universal serial bus signals ................................ ................................ ................................ ............... 33 2.1.10. power management signals ................................ ................................ ................................ .............. 33 2.1.11. general purpose input and output signals ................................ ................................ ....................... 35 2.1.12. other system and test signals ................................ ................................ ................................ ......... 39 2.1.13. power and ground pins ................................ ................................ ................................ ..................... 39 2.2. power planes ................................ ................................ ................................ ................................ .............. 40 2.3. power sequencing requirements ................................ ................................ ................................ .............. 41 3.0. register address space ................................ ................................ ................................ ..................... 42 3.1. pci/isa bridge configuration ................................ ................................ ................................ ..................... 42 3.1.1. pci configuration registers (function 0) ................................ ................................ ............................ 43 3.1.2. io space registers ................................ ................................ ................................ ............................. 44 3.2. ide configuration ................................ ................................ ................................ ................................ ........ 47 3.2.1. pci configuration registers (function 1) ................................ ................................ ............................ 47 3.2.2. io space registers ................................ ................................ ................................ ............................. 48 3.3. universal serial bus (usb) configuration ................................ ................................ ................................ .. 48 3.3.1. pci configuration registers (function 2) ................................ ................................ ............................ 48 3.3.2. io space registers ................................ ................................ ................................ ............................. 49 3.4. power management configuration ................................ ................................ ................................ ............. 50 3.4.1. io space registers ................................ ................................ ................................ ............................. 51 4.0. pci to isa/eio bridge register descriptions ................................ ................................ .............. 53 4.1. pci to isa/eio bridge pci configuration space registers (pci function 0) ................................ ............ 53 4.1.1. vid ? vendor identification register (function 0) ................................ ................................ ................ 53 4.1.2. did ? device identification register (function 0) ................................ ................................ ................ 53 4.1.3. pcicmd ? pci command register (function 0) ................................ ................................ ................ 54 4.1.4. pcists ? pci device status register (function 0) ................................ ................................ ............ 55 4.1.5. rid ? revision identification register (function 0) ................................ ................................ ............. 55
e 82371AB (piix4) 5 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.6. classc ? class code register (function 0) ................................ ................................ ..................... 56 4.1.7. hedt ? header type register (function 0) ................................ ................................ ........................ 56 4.1.8. iort ? isa i/o recovery timer register (fu nction 0) ................................ ................................ ....... 56 4.1.9. xbcs ? x-bus chip select register (function 0) ................................ ................................ ............... 57 4.1.10. pirqrc[a:d] ? pirqx route control registers (function 0) ................................ ......................... 59 4.1.11. serirqc ? serial irq control register (function 0) ................................ ................................ ...... 59 4.1.12. tom ? top of memory register (function 0) ................................ ................................ .................... 60 4.1.13. mstat ? miscellaneous status register (function 0) ................................ ................................ ...... 61 4.1.14. mbdma[1:0] ? motherboard device dma control registers (function 0) ................................ ........ 61 4.1.15. apicbase ? apic base address relocation register (function 0) ................................ ................ 62 4.1.16. dlc ? deterministic latency control register (function 0) ................................ .............................. 62 4.1.17. pdmacfg ? pci dma configuration register (function 0) ................................ ............................. 63 4.1.18. ddmabp ? distributed dma slave base pointer registers (function 0) ................................ ......... 64 4.1.19. gencfg ? general configuration register (function 0) ................................ ................................ . 65 4.1.20. rtccfg ? real time clock configuration register (function 0) ................................ .................... 67 4.2. pci to isa/eio bridge io space registers (io) ................................ ................................ ........................ 68 4.2.1. dma registers ................................ ................................ ................................ ................................ ..... 68 4.2.1.1. dcom ? dma command register (io) ................................ ................................ ........................ 68 4.2.1.2. dcm ? dma channel mode register (io) ................................ ................................ .................... 69 4.2.1.3. dr ? dma request register (io) ................................ ................................ ................................ . 70 4.2.1.4. wsmb ? write single mask bit (io) ................................ ................................ ............................. 70 4.2.1.5. rwamb ? read/write all mask bits (io) ................................ ................................ ..................... 71 4.2.1.6. ds ? dma status register (io) ................................ ................................ ................................ .... 71 4.2.1.7. dbaddr ? dma base and current address registers (io) ................................ ....................... 72 4.2.1.8. dbcnt ? dma base and current count registers (io) ................................ .............................. 72 4.2.1.9. dlpage ? dma low page registers (i o) ................................ ................................ ................... 73 4.2.1.10. dcbp ? dma clear byte pointer register (io) ................................ ................................ .......... 73 4.2.1.11. dmc ? dma master clear register (io) ................................ ................................ .................... 73 4.2.1.12. dclm ? dma clear mask register (io) ................................ ................................ ..................... 74 4.2.2. interrupt controller registers ................................ ................................ ................................ ............... 74 4.2.2.1. icw1 ? initialization command wor d 1 register (io) ................................ ................................ .. 74 4.2.2.2. icw2 ? initialization command word 2 register (io) ................................ ................................ .. 75 4.2.2.3. icw3 ? initialization command word 3 register (io) ................................ ................................ .. 75 4.2.2.4. icw3 ? initialization command word 3 register (io) ................................ ................................ .. 76 4.2.2.5. icw4 ? initialization command word 4 register (io) ................................ ................................ .. 76 4.2.2.6. ocw1 ? operational control word 1 register (io) ................................ ................................ ...... 77 4.2.2.7. ocw2 ? operational control word 2 register (io) ................................ ................................ ...... 77 4.2.2.8. ocw3 ? operational control word 3 register (io) ................................ ................................ ..... 78 4.2.2.9. elcr1 ? edge/level control register (io) ................................ ................................ .................. 79 4.2.2.10. elcr2 ? edge/level control register (io) ................................ ................................ ................ 79 4.2.3. counter/timer registers ................................ ................................ ................................ ...................... 80 4.2.3.1. tcw ? timer control word register (io) ................................ ................................ ..................... 80 4.2.3.2. tmrsts ? timer status registers (io) ................................ ................................ ....................... 82
82371AB (piix4) e 6 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.3.3. tmrcnt ? timer count registers (io) ................................ ................................ ....................... 82 4.2.4. nmi registers ................................ ................................ ................................ ................................ ...... 83 4.2.4.1. nmisc ? nmi status and control register (io) ................................ ................................ ........... 83 4.2.4.2. nmien ? nmi enable register (shared with real-time clock index register ) (io) ................... 84 4.2.5. real time clock registers ................................ ................................ ................................ .................. 84 4.2.5.1. rtci ? real-time clock index register (shared with nmi enable register) (io) ...................... 84 4.2.5.2. rtcd ? real-time clock data register (io) ................................ ................................ ............... 85 4.2.5.3. rtcei ? real-time clock extended index register (io) ................................ ............................. 85 4.2.5.4. rtced ? real-time clock extended data register (io) ................................ ............................ 85 4.2.6. advanced power management (apm) registers ................................ ................................ ................ 86 4.2.6.1. apmc ? advanced power management control port (io ) ................................ ........................... 86 4.2.6.2. apms ? advanced power management status port (io) ................................ ............................ 86 4.2.7. x-bus, coprocessor, and reset registers ................................ ................................ ......................... 86 4.2.7.1. rirq ? reset x-bus irq12/m and irq1 register (io) ................................ ............................... 86 4.2.7.2. p92 ? port 92 register (io) ................................ ................................ ................................ ........... 87 4.2.7.3. cerr ? coprocesso r error register (io) ................................ ................................ .................... 87 4.2.7.4. rc ? reset control register (io) ................................ ................................ ................................ . 88 5.0. ide controller register descriptions (pci function 1) ................................ ...................... 89 5.1. ide controller pci configuration registers (pci function 1) ................................ ................................ .... 89 5.1.1. vid ? vendor identification register (function 1) ................................ ................................ ................ 89 5.1.2. did ? device identification register (function 1) ................................ ................................ ................ 89 5.1.3. pcicmd ? pci command register (function 1) ................................ ................................ ................ 89 5.1.4. pcists ? pci device status register (function 1) ................................ ................................ ............ 90 5.1.5. rid ? revision identification register (function 1) ................................ ................................ ............. 91 5.1.6. classc ? class code register (function 1) ................................ ................................ ..................... 91 5.1.7. mlt ? master latency timer register (function 1) ................................ ................................ ............ 91 5.1.8. hedt ? header type register (function 1) ................................ ................................ ........................ 92 5.1.9. bmiba ? bus master interface base address register (function 1) ................................ .................. 92 5.1.10. idetim ? ide timing register (function 1) ................................ ................................ ...................... 93 5.1.11. sidetim ? slave ide timing register (function 1) ................................ ................................ .......... 95 5.1.12. udmactl ? ultra dma/33 control register (function 1) ................................ ................................ 96 5.1.13. udmatim ? ultra dma/33 timing register (function 1) ................................ ................................ .. 96 5.2. ide controller io space registers ................................ ................................ ................................ ............. 99 5.2.1. bmicx ? bus master ide command register (io) ................................ ................................ ............. 99 5.2.2. bmisx ? bus master ide status register (io) ................................ ................................ ................. 100 5.2.3. bmidtpx ? bus master ide descriptor table pointer register (io) ................................ ................ 101 6.0. usb host controller register descriptions (pci function 2) ................................ ........ 102 6.1. usb host controller pci configuration registers (pci function 2) ................................ ........................ 102 6.1.1. vid ? vendor identification register (function 2) ................................ ................................ .............. 102 6.1.2. did ? device identification register (function 2) ................................ ................................ .............. 102 6.1.3. pcicmd ? pci command register (function 2) ................................ ................................ .............. 103 6.1.4. pcists ? pci device status register (function 2) ................................ ................................ .......... 103
e 82371AB (piix4) 7 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.1.5. rid ? revision identification register (function 2) ................................ ................................ ........... 104 6.1.6. classc ? class code register (function 2) ................................ ................................ ................... 104 6.1.7. mlt ? master latency timer register (function 2) ................................ ................................ .......... 105 6.1.8. hedt ? header type register (function 2) ................................ ................................ ...................... 105 6.1.9. intln ? interrupt line register (function 2) ................................ ................................ ..................... 105 6.1.10. intpn ? in terrupt pin (function 2) ................................ ................................ ................................ .. 106 6.1.11. sbrnum ? serial bus release number (function 2) ................................ ................................ .... 106 6.1.12. legsup ? legacy support register (function 2) ................................ ................................ .......... 107 6.1.13. usbba ? usb i/o space base address register (function 2) ................................ ...................... 108 6.1.14. miscsup ? miscellaneous support register (function 2) ................................ ............................. 109 6.2. usb host controller io space registers ................................ ................................ ................................ . 109 6.2.1. usbcmd ? usb command register (io) ................................ ................................ ........................ 109 6.2.2. usbsts ? usb status register (io) ................................ ................................ ................................ 111 6.2.3. usbintr ? usb interrupt enable register (io) ................................ ................................ ............... 112 6.2.4. frnum ? frame number register (io) ................................ ................................ ............................ 113 6.2.5. flbaseadd ? frame list base address register (io) ................................ ................................ ... 113 6.2.6. sofmod ? start of frame (sof) modify register (io) ................................ ................................ ... 114 6.2.7. portsc ? port status and control register (io) ................................ ................................ ............. 115 7.0. power management register descriptions ................................ ................................ ............ 117 7.1. power management pci configuration registers (pci function 3) ................................ ........................ 117 7.1.1. vid ? vendor identification register (function 3) ................................ ................................ .............. 117 7.1.2. did ? device identification register (function 3) ................................ ................................ .............. 117 7.1.3. pcicmd ? pci command register (function 3) ................................ ................................ .............. 117 7.1.4. pcists ? pci device status register (function 3) ................................ ................................ .......... 118 7.1.5. rid ? revision identification register (function 3) ................................ ................................ ........... 119 7.1.6. classc ? class code register (function 3) ................................ ................................ ................... 119 7.1.7. hedt ? header type register (function 3) ................................ ................................ ...................... 119 7.1.8. intln ? interrupt line register (function 3) ................................ ................................ ..................... 120 7.1.9. intpn ? interrupt pin (function 3) ................................ ................................ ................................ .... 120 7.1.10. pmba ? power management base address (function 3) ................................ ............................... 120 7.1.11. cnta ? count a (function 3) ................................ ................................ ................................ .......... 121 7.1.12. cntb ? count b (function 3) ................................ ................................ ................................ .......... 121 7.1.13. gpictl ? general purpose input control (function 3) ................................ ................................ ... 123 7.1.14. devresd ? device resource d (function 3 ) ................................ ................................ ................ 123 7.1.15. devacta ? device activity a (function 3) ................................ ................................ .................... 125 7.1.16. devactb ? device activity b (function 3) ................................ ................................ .................... 126 7.1.17. devresa ? device resource a (function 3) ................................ ................................ ................ 127 7.1.18. devresb ? device resource b (function 3) ................................ ................................ ................ 129 7.1.19. devresc ? device reso urce c (function 3) ................................ ................................ ................ 130 7.1.20. devrese ? device resource e (function 3) ................................ ................................ ................ 131 7.1.21. devresf ? device resource f (function 3) ................................ ................................ ................. 131 7.1.22. devresg ? device resource g (function 3) ................................ ................................ ............... 132
82371AB (piix4) e 8 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.23. devresh ? device resource h (function 3) ................................ ................................ ................ 133 7.1.24. devresi ? device resource i (function 3) ................................ ................................ ................... 133 7.1.25. devresj ? device resource j (function 3) ................................ ................................ ................. 134 7.1.26. pmregmisc ? miscellaneous power management (function 3) ................................ .................. 134 7.1.27. smbba ? smbus base address (function 3) ................................ ................................ ................ 135 7.1.28. smbhstcfg ? smbus host configuration (function 3) ................................ .............................. 135 7.1.29. smbslvc ? smbus slave command (function 3) ................................ ................................ ....... 135 7.1.30. smbshdw1 ? smbus slave shadow port 1 (function 3) ................................ ............................ 136 7.1.31. smbshdw2 ? smbus slave shadow port 2 (function 3) ................................ ............................ 136 7.1.32. smbrev ? smbus revision identification (function 3) ................................ ................................ 136 7.2. power management io space registers ................................ ................................ ................................ . 137 7.2.1. pmsts ? power management status register (io) ................................ ................................ ......... 137 7.2.2. pmen ? power management resume enable register (io) ................................ ............................ 138 7.2.3. pmcntrl ? power management control register (io) ................................ ................................ ... 138 7.2.4. pmtmr ? power management timer register (io) ................................ ................................ .......... 139 7.2.5. gpsts ? general purpose status register (io) ................................ ................................ .............. 139 7.2.6. gpen ? general purpose enable register (io) ................................ ................................ ............... 140 7.2.7. pcntrl ? processor control register (io) ................................ ................................ ...................... 141 7.2.8. plvl2 ? processor level 2 register (io) ................................ ................................ ......................... 142 7.2.9. plvl3 ? processor level 3 register (io) ................................ ................................ ........................ 142 7.2.10. glbsts ? global status register (io) ................................ ................................ ........................... 143 7.2.11. devsts ? device status register (io) ................................ ................................ .......................... 144 7.2.12. glben ? global enable register (io) ................................ ................................ ............................ 144 7.2.13. glbctl ? global control register (io) ................................ ................................ .......................... 145 7.2.14. devctl ? device control register (io) ................................ ................................ ......................... 146 7.2.15. gpireg ? general purpose input register (io) ................................ ................................ ............. 147 7.2.16. gporeg ? general purpose output register (io) ................................ ................................ ........ 148 7.3. smbus io space registers ................................ ................................ ................................ ...................... 148 7.3.1. smbhststs ? smbus host status register (io) ................................ ................................ ............ 148 7.3.2. smbslvsts ? smbus slave status register (io) ................................ ................................ .......... 149 7.3.3. smbhstcnt ? smbus host control register (io) ................................ ................................ .......... 150 7.3.4. smbhstcmd ? smbus host command register (io) ................................ ................................ .... 150 7.3.5. smbhstadd ? smbus host address register (io) ................................ ................................ ........ 151 7.3.6. smbhstdat0 ? smbus host data 0 register (io) ................................ ................................ ......... 151 7.3.7. smbhstdat1 ? smbus host data 1 register (io) ................................ ................................ ......... 151 7.3.8. smbblkdat ? smbus block data register (io) ................................ ................................ ............. 152 7.3.9. smbslvcnt ? smbus slave control register (io) ................................ ................................ ......... 152 7.3.10. smbshdwcmd ? smbus shadow command register (io) ................................ ......................... 153 7.3.11. smbslvevt ? smbus slave event register (io) ................................ ................................ ......... 153 7.3.12. smbslvdat ? smbus slave data register (io) ................................ ................................ ........... 153 8.0. pci/isa bridge functional description ................................ ................................ ...................... 154 8.1. memory and io address map ................................ ................................ ................................ ................... 154
e 82371AB (piix4) 9 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.1.1. i/o accesses ................................ ................................ ................................ ................................ ..... 154 8.1.2. memory address map ................................ ................................ ................................ ........................ 154 8.1.3. bios memory ................................ ................................ ................................ ................................ .... 155 8.2. pci interface ................................ ................................ ................................ ................................ ............. 157 8.2.1. transaction termination ................................ ................................ ................................ .................... 157 8.2.2. parity support ................................ ................................ ................................ ................................ .... 157 8.2.3. pci arbitration ................................ ................................ ................................ ................................ .... 157 8.3. isa/eio interface ................................ ................................ ................................ ................................ ...... 158 8.4. dma controller ................................ ................................ ................................ ................................ ......... 158 8.4.1. dma transfer modes ................................ ................................ ................................ ......................... 159 8.4.2. dma transfer types ................................ ................................ ................................ ......................... 160 8.4.3. dma timings ................................ ................................ ................................ ................................ ..... 161 8.4.4. dma buffer for type f transfers ................................ ................................ ................................ ...... 161 8.4.5. dreq and dack# latency control ................................ ................................ ................................ .. 161 8.4.6. channel priority ................................ ................................ ................................ ................................ . 162 8.4.7. register functionality ................................ ................................ ................................ ........................ 162 8.4.8. address compatibility mode ................................ ................................ ................................ .............. 162 8.4.9. summary of dma transfer sizes ................................ ................................ ................................ ...... 163 8.4.9.1. address shifting when programmed for 16-bit i/o count by words ................................ ......... 163 8.4.10. autoinitialize ................................ ................................ ................................ ................................ ..... 163 8.4.11. software commands ................................ ................................ ................................ ....................... 164 8.4.12. isa refresh cycles ................................ ................................ ................................ ......................... 164 8.5. pci dma ................................ ................................ ................................ ................................ ................... 165 8.5.1. pc/pci dma ................................ ................................ ................................ ................................ ...... 165 8.5.2. distributed dma ................................ ................................ ................................ ................................ . 168 8.6. interrupt controller ................................ ................................ ................................ ................................ .... 171 8.6.1. programming the interrupt controller ................................ ................................ ................................ 172 8.6.2. end-of-interrupt operation ................................ ................................ ................................ ................. 173 8.6.3. modes of operation ................................ ................................ ................................ ........................... 173 8.6.4. cascade mode ................................ ................................ ................................ ................................ ... 175 8.6.5. edge and level triggered mode ................................ ................................ ................................ ........ 175 8.6.6. interrupt masks ................................ ................................ ................................ ................................ .. 176 8.6.7. reading the interrupt controller status ................................ ................................ ............................. 176 8.6.8. interrupt steering ................................ ................................ ................................ ............................... 177 8.7. serial interrupts ................................ ................................ ................................ ................................ ......... 178 8.7.1. protocol ................................ ................................ ................................ ................................ .............. 178 8.8. timer / counters ................................ ................................ ................................ ................................ ......... 180 8.8.1. programming the interval timer ................................ ................................ ................................ ........ 180 8.9. real time clock ................................ ................................ ................................ ................................ ....... 183 8.9.1. rtc registers and ram ................................ ................................ ................................ ................... 183 8.9.1.1. control register a ................................ ................................ ................................ ....................... 185 8.9.1.2. control register b ................................ ................................ ................................ ....................... 186 8.9.1.3. control register c ................................ ................................ ................................ ...................... 187
82371AB (piix4) e 10 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.9.1.4. control register d ................................ ................................ ................................ ...................... 187 8.9.2. rtc update cycle ................................ ................................ ................................ ............................. 188 8.9.3. rtc interrupts ................................ ................................ ................................ ................................ ... 188 8.9.4. lockable ram ranges ................................ ................................ ................................ ...................... 188 8.9.5. rtc external connections ................................ ................................ ................................ ................ 188 8.10. x-bus support ................................ ................................ ................................ ................................ ........ 188 8.11. reset support ................................ ................................ ................................ ................................ ......... 189 8.12. stand-alone i/o apic support ................................ ................................ ................................ ............... 190 9.0. ide controller functional description ................................ ................................ .................. 191 9.1. ide signal configuration ................................ ................................ ................................ ........................... 191 9.2. ata register block decode ................................ ................................ ................................ ..................... 192 9.3. pio ide transactions ................................ ................................ ................................ ............................... 193 9.4. bus master function ................................ ................................ ................................ ................................ . 195 9.5. ? ultra dma/33 ? synchronous dma operation ................................ ................................ .......................... 197 10.0. usb host controller functional description ................................ ................................ ... 199 11.0. power management functional description ................................ ................................ ....... 201 11.1. power management overview ................................ ................................ ................................ ............... 201 11.2. clock control ................................ ................................ ................................ ................................ .......... 202 11.2.1. host clock control mechanisms ................................ ................................ ................................ ..... 202 11.2.2. stop clock and deep sleep state example sequence ................................ ................................ ... 208 11.2.3. pci clock control ................................ ................................ ................................ ............................ 210 11.3. peripheral device management ................................ ................................ ................................ ............. 210 11.3.1. device idle timer ................................ ................................ ................................ ............................. 211 11.3.2. device trap ................................ ................................ ................................ ................................ ..... 212 11.3.3. peripheral device management sequence ................................ ................................ ..................... 212 11.3.4. device location on pci bus or isa bus ................................ ................................ ......................... 212 11.3.5. device specific details ................................ ................................ ................................ .................... 215 11.3.5.1. device 0: ide primary drive 0 ................................ ................................ ................................ .. 215 11.3.5.2. device 1: ide primary drive 1 ................................ ................................ ................................ .. 216 11.3.5.3. device 2: ide secondary drive 0 ................................ ................................ ............................. 216 11.3.5.4. device 3: ide secondary drive 1 ................................ ................................ ............................. 217 11.3.5.5. device 4: audio ................................ ................................ ................................ ......................... 218 11.3.5.6. device 5: floppy disk drive ................................ ................................ ................................ ..... 219 11.3.5.7. device 6: serial port a ................................ ................................ ................................ .............. 220 11.3.5.8. device 7: serial port b ................................ ................................ ................................ .............. 221 11.3.5.9. device 8: lpt (parallel port) ................................ ................................ ................................ .... 222 11.3.5.10. device 9: generic i/o device 0 ................................ ................................ .............................. 223 11.3.5.11. device 10: generic i/o device 1 ................................ ................................ ............................ 224 11.3.5.12. device 11: user interface (keyboard, mouse, video) ................................ ............................ 225 11.3.5.13. device 12: cardbus slot (or generic i/o and mem device) ................................ .................. 226 11.3.5.14. device 13: cardbus slot (or generic i/o and mem device) ................................ .................. 227
e 82371AB (piix4) 11 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4. suspend/resume and power plane control ................................ ................................ .......................... 228 11.4.1. system suspend ................................ ................................ ................................ .............................. 228 11.4.2. system resume ................................ ................................ ................................ .............................. 230 11.4.3. system suspend and resume control signaling ................................ ................................ ............ 232 11.4.3.1. power supply timings ................................ ................................ ................................ .............. 232 11.4.3.2. power level active status signal timings ................................ ................................ ............... 233 11.4.3.3. power management signal timings (powered from suspend power well) ........................... 234 11.4.3.4. pci clock stop and start timing relationships ................................ ................................ ....... 235 11.4.3.5. power management signal timings (powered from piix4 main core well) .......................... 236 11.4.3.6. power management signal timings (powered from piix4 main core well) .......................... 238 11.4.3.7. mechanical off to on condition timings ................................ ................................ .................. 240 11.4.3.8. on state to power on suspend state timing ................................ ................................ .......... 242 11.4.3.9. power on suspend to on timing (with a full system reset) ................................ ................. 244 11.4.3.10. system transition from power on suspend to on (with only processor reset) ................ 246 11.4.3.11. power on suspend to on timing (with no resets) ................................ .............................. 248 11.4.3.12. on state to suspend to ram state timing ................................ ................................ ............ 250 11.4.3.13. suspend-to-ram to on timing (with full system reset) ................................ .................... 252 11.4.3.14. on state to suspend to disk/soft off state timings ................................ .............................. 254 11.4.3.15. suspend-to-disk to on (with full system reset) ................................ ................................ . 256 11.4.4. shadow registers ................................ ................................ ................................ ............................ 258 11.5. system management ................................ ................................ ................................ .............................. 262 11.5.1. smi operation ................................ ................................ ................................ ................................ .. 262 11.5.2. smi# generation events ................................ ................................ ................................ .................. 263 11.5.3. global standby timer operation ................................ ................................ ................................ ..... 265 11.5.4. smbus functional description ................................ ................................ ................................ ........ 266 11.5.4.1. smbus host interface ................................ ................................ ................................ ............... 266 11.5.4.2. smbus slave interface ................................ ................................ ................................ ............. 267 11.6. acpi support ................................ ................................ ................................ ................................ .......... 268 11.6.1. sci generation ................................ ................................ ................................ ................................ 268 11.6.2. power management timer ................................ ................................ ................................ ............... 268 11.6.3. global lock ................................ ................................ ................................ ................................ ...... 269 12.0. pinout information ................................ ................................ ................................ ........................... 270 13.0. piix4 package information ................................ ................................ ................................ ............. 274 14.0. testability ................................ ................................ ................................ ................................ ............ 277 14.1. test mode description ................................ ................................ ................................ ............................ 277 14.2. tri-state mode ................................ ................................ ................................ ................................ ......... 278 14.3. nand tree mode ................................ ................................ ................................ ................................ ... 278
82371AB (piix4) e 12 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 1. 0. architectural overview piix4 is a multi-function pci device that integrates many system-level functions. figure 1 shows an example system block diagram using piix4. pci bus (3.3v or 5v, 30/33 mhz) main memory (dram) processor host bus second level cache host-to-pci bridge bmi ide ultra dma/33 cd rom hard disk isa/eio bus (3.3v; 5v tolerant) usb 2 usb 1 82371AB (piix4) gp[i,o] (30+) smbus audio kbd sp, pp, fdc, ir bios pci slots hard disk pix4_sys figure 1 . piix4 system block diagram pci to isa/eio bridge piix4 is compatible with the pci rev 2.1 specification, as well as the ieee 996 specification for the isa (at) bus. on pci, piix4 operates as a master for various internal modules, such as the usb controller, dma controller, ide bus master controller, distributed dma masters, and on behalf of isa masters. piix4 operates as a slave for its internal registers or for cycles that are passed to the isa or eio buses. all internal registers are positively decoded.
e 82371AB (piix4) 13 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary piix4 can be configured for a full isa bus or a subset of the isa bus called the extended io (eio) bus. the use of the eio bus allows unused signals to be configured as general purpose inputs and outputs. piix4 can directly drive up to five isa slots without external data or address buffering. it also provides byte-swap logic, i/o recovery support, wait-state generation, and sysclk generation. x-bus chip selects are provided for keyboard controller, bios, real time clock, a second microcontroller, as well as two programmable chip selects. piix4 can be configured as either a subtractive decode pci to isa bridge or as a positive decode bridge. this gives a system designer the option of placing another subtractive decode bridge in the system (e.g., an intel 380fb dock set). ide interface (bus master capability and synchronous dma mode) the fast ide interface supports up to four ide devices providing an interface for ide hard disks and cd roms. each ide device can have independent timings. the ide interface supports pio ide transfers up to 14 mbytes/sec and bus master ide transfers up to 33 mbytes/sec. it does not consume any isa dma resources. the ide interface integrates 16x32-bit buffers for optimal transfers. piix4?s ide system contains two independent ide signal channels. they can be electrically isolated independently, allowing for the implementation of a ? glueless ? swap bay. they can be configured to the standard primary and secondary channels (four devices) or primary drive 0 and primary drive 1 channels (two devices). this allows flexibility in system design and device power management. compatibility modules (dma controller, timer/counters, interrupt controller) the dma controller incorporates the logic of two 82c37 dma controllers, with seven independently programmable channels. channels [0:3] are hardwired to 8-bit, count-by-byte transfers, and channels [5:7] are hardwired to 16-bit, count-by-word transfers. any two of the seven dma channels can be programmed to support fast type-f transfers. the dma controller also generates the isa refresh cycles. the dma controller supports two separate methods for handling legacy dma via the pci bus. the pc/pci protocol allows pci-based peripherals to initiate dma cycles by encoding requests and grants via three pc/pci req#/gnt# pairs. the second method, distributed dma, allows reads and writes to 82c37 registers to be distributed to other pci devices. the two methods can be enabled concurrently. the serial interrupt scheme typically associated with distributed dma is also supported. the timer/counter block contains three counters that are equivalent in function to those found in one 82c54 programmable interval timer. these three counters are combined to provide the system timer function, refresh request, and speaker tone. the 14.31818-mhz oscillator input provides the clock source for these three counters. piix4 provides an isa-compatible interrupt controller that incorporates the functionality of two 82c59 interrupt controllers. the two interrupt controllers are cascaded so that 14 external and two internal interrupts are possible. in addition, piix4 supports a serial interrupt scheme. piix4 provides full support for the use of an external io apic. all of the registers in these modules can be read and restored. this is required to save and restore system state after power has been removed and restored to the circuit. enhanced universal serial bus (usb) controller the piix4 usb controller provides enhanced support for the universal host controller interface (uhci). this includes support that allows legacy software to use a usb-based keyboard and mouse.
82371AB (piix4) e 14 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary rtc piix4 contains a motorola* mc146818a-compatible real-time clock with 256 bytes of battery-backed ram. the real-time clock performs two key functions: keeping track of the time of day and storing system data, even when the system is powered down. the rtc operates on a 32.768-khz crystal and a separate 3v lithium battery that provides up to 7 years of protection. the rtc also supports two lockable memory ranges. by setting bits in the configuration space, two 8-byte ranges can be locked to read and write accesses. this prevents unauthorized reading of passwords or other system security information. the rtc also supports a date alarm, that allows for scheduling a wake up event up to 30 days in advance, rather than just 24 hours in advance. gpio and chip selects various general purpose inputs and outputs are provided for custom system design. the number of inputs and outputs varies depending on piix4 configuration. two programmable chip selects are provided which allows the designer to place devices on the x-bus without the need for external decode logic. pentium ? and pentium ? ii processor interface the piix4 cpu interface allows connection to all pentium and pentium ii processors. the sleep mode for the pentium ii processors is also supported. enhanced power management piix4?s power management functions include enhanced clock control, local and global monitoring support for 14 individual devices, and various low-power (suspend) states, such as power-on suspend, suspend-to-dram, and suspend-to-disk. a hardware-based thermal management circuit permits software-independent entrance to low-power states. piix4 has dedicated pins to monitor various external events (e.g., interfaces to a notebook lid, suspend/resume button, battery low indicators, etc.). piix4 contains full support for the advanced configuration and power interface (acpi) specification. system management bus (smbus) piix4 contains an smbus host interface that allows the cpu to communicate with smbus slaves and an smbus slave interface that allows external masters to activate power management events. configurability piix4 provides a wide range of system configuration options. this includes full 16-bit i/o decode on internal modules, dynamic disable on all the internal modules, various peripheral decode options, and many options on system configuration.
e 82371AB (piix4) 15 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2. 0. signal description this section provides a detailed description of each signal. the signals are arranged in functional groups according to their associated interface. the ? # ? symbol at the end of a signal name indicates that the active, or asserted state occurs when the signal is at a low voltage level. when ? # ? is not present after the signal name, the signal is asserted when at the high voltage level. the terms assertion and negation are used exclusively. this is done to avoid confusion when working with a mixture of ? active low ? and ? active high ? signal. the term assert, or assertion indicates that a signal is active, independent of whether that level is represented by a high or low voltage. the term negate, or negation indicates that a signal is inactive. certain signals have different functions, depending on the configuration programmed in the pci configuration space. the signal whose function is being described is in bold font. some of the signals are multiplexed with general purpose inputs and outputs. the default configuration and control bits for each are described in table 1 and table 2 . each output signal description includes the value of the signal during reset , after reset , and during pos . during reset refers to when the pcirst# signal is asserted. after reset is immediately after negation of pcirst# and the signal may change value anytime thereafter. the term high-z means tri-stated. the term undefined means the signal could be high, low, tri-stated, or in some in-between level. some of the power management signals are reset with the rsmrst# input signal. the functionality of these signals during rsmrst# assertion is described in the suspend/resume and power plane control section. the i/o buffer types are shown below: buffer type description i i nput only signal o totem pole output i/o bi-direction, tri-state input/output pin s/t/s sustained tri-state od open drain i/od input/open drain output is a standard input buffer with an open drain output v this is not a standard signal. it is a power supply pin. 3.3v/2.5v indicates the buffer is 3.3v or 2.5v only, depending on the voltage (3.3v or 2.5v) connected to v cc x pins. 3.3v/5v indicates that the output is 3.3v and input is 3.3v receiver with 5v tolerance. 5v indicates 3.3v receiver with 5v toleranc e. all 3v output signals can drive 5v ttl inputs. most of the 3v input signals are 5v tolerant. the 3v input signals which are powered via the rtc or suspend power planes should not exceed their power supply voltage (see power planes chapter for additional information). the open drain (od) cpu interface signals should be pulled up to the cpu interface signal voltage.
82371AB (piix4) e 16 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.1. piix4 signals 2.1.1. pci bus interface name type description ad[31:0] i/o pci address/data. ad[31:0] is a multiplexed address and data bus. during the first clock of a transaction, ad[31:0] contain a physical byte address (32 bits). during subsequent clocks, ad[31:0] contain data. a piix4 bus transaction consists of an address phase followed by one or more data phases. little-endian byte ordering is used. ad[7:0] define the least significant byte (lsb) and ad[31:24] the most significant byte (msb). when piix4 is a target, ad[31:0] are inputs during the address phase of a transaction. during the following data phase(s), piix4 may be asked to supply data on ad[31:0] for a pci read, or accept data for a pci write. as an initiator, piix4 drives a valid address on ad[31:2] and 0 on ad[1:0] during the address phase, and drives write or latches read data on ad[31:0] during the data phase. during reset: high-z after reset: high-z during pos: high-z c/be#[3:0] i/o bus command and byte enables. the command and byte enable signals are multiplexed on the same pci pins. during the address phase of a transaction, c/be[3:0]# define the bus command. during the data phase c/be[3:0]# are used as byte enables. the byte enables determine which byte lanes carry meaningful data. c/be0# applies to byte 0, c/be1# to byte 1, etc. piix4 drives c/be[3:0]# as an initiator and monitors c/be[3:0]# as a target. during reset: high-z after reset: high-z during pos: high-z clkrun# i/o clock run#. t his signal is used to communicate to pci peripherals that the pci clock will be stopped. peripherals can assert clkrun# to request that the pci clock be restarted or to keep it from stopping. this function follows the protocol described in the pci mobile design guide, revision 1.0. during reset: low after reset: low during pos: high devsel# i/o device select. piix4 asserts devsel# to claim a pci transaction through positive decoding or subtractive decoding (if enabled). as an output, piix4 asserts devsel# when it samples idsel active in configuration cycles to piix4 configuration registers. piix4 also asserts devsel# when an internal piix4 address is decoded or when piix4 subtractively or positively decodes a cycle for the isa/eio bus or ide device. as an input, devsel# indicates the response to a piix4 initiated transaction and is also sampled when deciding whether to subtractively decode the cycle. devsel# is tri- stated from the leading edge of pcirst#. devsel# remains tri-stated until driven by piix4 as a target. during reset: high-z after reset: high-z during pos: high-z frame# i/o c ycle frame. frame# is driven by the current initiator to indicate the beginning and duration of an access. while frame# is asserted data transfers continue. when frame# is negated the transaction is in the final data phase. frame# is an input to piix4 when it is the target. frame# is an output when piix4 is the initiator. frame# remains tri-stated until driven by piix4 as an initiator. during reset: high-z after reset: high-z during pos: high-z
e 82371AB (piix4) 17 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description idsel i initialization device select. idsel is used as a chip select during pci configuration read and write cycles. piix4 samples idsel during the address phase of a transaction. if idsel is sampled active, and the bus command is a configuration read or write, piix4 responds by asserting devsel# on the next cycle. irdy# i/o initiator ready. irdy# indicates piix4?s ability, as an initiator, to complete the current data phase of the transaction. it is used in conjunction with trdy#. a data phase is completed on any clock both irdy# and trdy# are sampled asserted. during a write, irdy# indicates piix4 has valid data present on ad[31:0]. during a read, it indicates piix4 is prepared to latch data. irdy# is an input to piix4 when piix4 is the target and an output when piix4 is an initiator. irdy# remains tri-stated until driven by piix4 as a master. during reset: high-z after reset: high-z during pos: high-z par o calculated parity signal. par is ? even ? parity and is calculated on 36 bits; ad[31:0] plus c/be[3:0]#. ? even ? parity means that the number of ? 1 ? s within the 36 bits plus par are counted and the sum is always even. par is always calculated on 36 bits regardless of the valid byte enables. par is generated for address and data phases and is only guaranteed to be valid one pci clock after the corresponding address or data phase. par is driven and tri-stated identically to the ad[31:0] lines except that par is delayed by exactly one pci clock. par is an output during the address phase (delayed one clock) for all piix4 initiated transactions. it is also an output during the data phase (delayed one clock) when piix4 is the initiator of a pci write transaction, and when it is the target of a read transaction. during reset: high-z after reset: high-z during pos: high-z pcirst# o pci reset. piix4 asserts pcirst# to reset devices that reside on the pci bus. piix4 asserts pcirst# during power-up and when a hard reset sequence is initiated through the rc register. pcirst# is driven inactive a minimum of 1 ms after pwrok is driven active. pcirst# is driven for a minimum of 1 ms when initiated through the rc register. pcirst# is driven asynchronously relative to pciclk. during reset: low after reset: high during pos: high phold# o pci hold. an active low assertion indicates that piix4 desires use of the pci bus. once the pci arbiter has asserted phlda# to piix4, it may not negate it until phold# is negated by piix4. piix4 implements the passive release mechanism by toggling phold# inactive for one pciclk. during reset: high-z after reset: high during pos: high phlda# i pci hold acknowledge. an active low assertion indicates that piix4 has been granted use of the pci bus. once phlda# is asserted, it cannot be negated unless phold# is negated first. serr# i/o system error. serr# can be pulsed active by any pci device that detects a system error condition. upon sampling serr# active, piix4 can be programmed to generate a non-maskable interrupt (nmi) to the cpu. during reset: high-z after reset: high-z during pos: high-z
82371AB (piix4) e 18 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description stop# i/o stop. stop# indicates that piix4, as a target, is requesting an initiator to stop the current transaction. as an initiator, stop# causes piix4 to stop the current transaction. stop# is an output when piix4 is a target and an input when piix4 is an initiator. stop# is tri-stated from the leading edge of pcirst#. stop# remains tri-stated until driven by piix4 as a slave. during reset: high-z after reset: high-z during pos: high-z trdy# i/o target ready. trdy# indicates piix4?s ability to complete the current data phase of the transaction. trdy# is used in conjunction with irdy#. a data phase is completed when both trdy# and irdy# are sampled asserted. during a read, trdy# indicates that piix4, as a target, has place valid data on ad[31:0]. during a write, it indicates piix4, as a target is prepared to latch data. trdy# is an input to piix4 when piix4 is the initiator and an output when piix4 is a target. trdy# is tri-stated from the leading edge of pcirst#. trdy# remains tri-stated until driven by piix4 as a slave. during reset: high-z after reset: high-z during pos: high-z notes: all of the signals in the host interface are described in the pentium processor data sheet. the preceding table highlights piix4 specific uses of these signals. 2.1.2. isa bus interface name type description aen o address enable. aen is asserted during dma cycles to prevent i/o slaves from misinterpreting dma cycles as valid i/o cycles. when negated, aen indicates that an i/o slave may respond to address and i/o commands. when asserted, aen informs i/o resources on the isa bus that a dma transfer is occurring. this signal is also driven high during piix4 initiated refresh cycles. during reset: high-z after reset: low during pos: low bale o bus address latch enable. bale is asserted by piix4 to indicate that the address (sa[19:0], la[23:17]) and sbhe# signal lines are valid. the la[23:17] address lines are latched on the trailing edge of bale. bale remains asserted throughout dma and isa master cycles. during reset: high-z after reset: low during pos: low iochk#/ gpi0 i i/o channel check. iochk# can be driven by any resource on the isa bus. when asserted, it indicates that a parity or an uncorrectable error has occurred for a device or memory on the isa bus. a nmi will be generated to the cpu if the nmi generation is enabled. if the eio bus is used, this signal becomes a general purpose input.
e 82371AB (piix4) 19 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description iochrdy i/o i/o channel ready. resources on the isa bus negate iochrdy to indicate that wait states are required to complete the cycle. this signal is normally high. iochrdy is an input when piix4 owns the isa bus and the cpu or a pci agent is accessing an isa slave, or during dma transfers. iochrdy is output when an external isa bus master owns the isa bus and is accessing dram or a piix4 register. as a piix4 output, iochrdy is driven inactive (low) from the falling edge of the isa commands. after data is available for an isa master read or piix4 latches the data for a write cycle, iochrdy is asserted for 70 ns. after 70 ns, piix4 floats iochrdy. the 70 ns includes both the drive time and the time it takes piix4 to float iochrdy. piix4 does not drive this signal when an isa bus master is accessing an isa bus slave. during reset: high-z after reset: high-z during pos: high-z iocs16# i 16-bit i/o chip select. this signal is driven by i/o devices on the isa bus to indicate support for 16-bit i/o bus cycles. ior# i/o i/o read. ior# is the command to an isa i/o slave device that the slave may drive data on to the isa data bus (sd[15:0]). the i/o slave device must hold the data valid until after ior# is negated. ior# is an output when piix4 owns the isa bus. ior# is an input when an external isa master owns the isa bus. during reset: high-z after reset: high during pos: high iow# i/o i/o write. iow# is the command to an isa i/o slave device that the slave may latch data from the isa data bus (sd[15:0]). iow# is an output when piix4 owns the isa bus. iow# is an input when an external isa master owns the isa bus. during reset: high-z after reset: high during pos: high la[23:17]/ gpo[7:1] i/o isa la[23:17]. la[23:17] address lines allow accesses to physical memory on the isa bus up to 16 mbytes. la[23:17] are outputs when piix4 owns the isa bus. the la[23:17] lines become inputs whenever an isa master owns the isa bus. if the eio bus is used, these signals become a general purpose output. during reset: high-z after reset: undefined during pos: last la/gpo memcs16# i/o memory chip select 16. memcs16# is a decode of la[23:17] without any qualification of the command signal lines. isa slaves that are 16-bit memory devices drive this signal low. piix4 ignores memcs16# during i/o access cycles and refresh cycles. memcs16# is an input when piix4 owns the isa bus. piix4 drives this signal low during isa master to pci memory cycles. during reset: high-z after reset: high-z during pos: high-z memr# i/o memory read. memr# is the command to a memory slave that it may drive data onto the isa data bus. memr# is an output when piix4 is a master on the isa bus. memr# is an input when an isa master, other than piix4, owns the isa bus. this signal is also driven by piix4 during refresh cycles. for dma cycles, piix4, as a master, asserts memr#. during reset: high-z after reset: high during pos: high
82371AB (piix4) e 20 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description memw# i/o memory write. memw# is the command to a memory slave that it may latch data from the isa data bus. memw# is an output when piix4 owns the isa bus. memw# is an input when an isa master, other than piix4, owns the isa bus. for dma cycles, piix4, as a master, asserts memw#. during reset: high-z after reset: high during pos: high refresh# i/o refresh. as an output, refresh# is used by piix4 to indicate when a refresh cycle is in progress. it should be used to enable the sa[7:0] address to the row address inputs of all banks of dynamic memory on the isa bus. thus, when memr# is asserted, the entire expansion bus dynamic memory is refreshed. memory slaves must not drive any data onto the bus during refresh. as an output, this signal is driven directly onto the isa bus. this signal is an output only when piix4 dma refresh controller is a master on the bus responding to an internally generated request for refresh. as an input, refresh# is driven by 16-bit isa bus masters to initiate refresh cycles. during reset: high-z after reset: high during pos: high rstdrv o reset drive. piix4 asserts rstdrv to reset devices that reside on the isa/eio bus. piix4 asserts this signal during a hard reset and during power-up. rstdrv is asserted during power-up and negated after pwrok is driven active. rstdrv is also driven active for a minimum of 1 ms if a hard reset has been programmed in the rc register. during reset: high after reset: low during pos: low sa[19:0] i/o system address[19:0]. these bi-directional address lines define the selection with the granularity of 1 byte within the 1-megabyte section of memory defined by the la[23:17] address lines. the address lines sa[19:17] that are coincident with la[19:17] are defined to have the same values as la[19:17] for all memory cycles. for i/o accesses, only sa[15:0] are used, and sa[19:16] are undefined. sa[19:0] are outputs when piix4 owns the isa bus. sa[19:0] are inputs when an external isa master owns the isa bus. during reset: high-z after reset: undefined during pos: last sa sbhe# i/o system byte high enable. sbhe# indicates, when asserted, that a byte is being transferred on the upper byte (sd[15:8]) of the data bus. sbhe# is negated during refresh cycles. sbhe# is an output when piix4 owns the isa bus. sbhe# is an input when an external isa master owns the isa bus. during reset: high-z after reset: undefined during pos: high sd[15:0] i/o system data. sd[15:0] provide the 16-bit data path for devices residing on the isa bus. sd[15:8] correspond to the high order byte and sd[7:0] correspond to the low order byte. sd[15:0] are undefined during refresh. during reset: high-z after reset: undefined during pos: high-z smemr# o standard memory read. piix4 asserts smemr# to request an isa memory slave to drive data onto the data lines. if the access is below the 1-mbyte range (00000000h ? 000fffffh) during dma compatible, piix4 master, or isa master cycles, piix4 asserts smemr#. smemr# is a delayed version of memr#. during reset: high-z after reset: high during pos: high
e 82371AB (piix4) 21 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description smemw# o standard memory write. piix4 asserts smemw# to request an isa memory slave to accept data from the data lines. if the access is below the 1-mbyte range (00000000h ? 000fffffh) during dma compatible, piix4 master, or isa master cycles, piix4 asserts smemw#. smemw# is a delayed version of memw#. during reset: high-z after reset: high during pos: high zerows# i zero wait states. an isa slave asserts zerows# after its address and command signals have been decoded to indicate that the current cycle can be shortened. a 16-bit isa memory cycle can be reduced to two sysclks. an 8-bit memory or i/o cycle can be reduced to three sysclks. zerows# has no effect during 16-bit i/o cycles. if iochrdy is negated and zerows# is asserted during the same clock, then zerows# is ignored and wait states are added as a function of iochrdy. 2.1.3. x-bus interface name type description a20gate i address 20 gate. this input from the keyboard controller is logically combined with bit 1 (fast_a20) of the port 92 register, which is then output via the a20m# signal. bioscs# o bios chip select. this chip select is driven active during read or write accesses to enabled bios memory ranges. bioscs# is driven combinatorially from the isa addresses sa[16:0] and la[23:17], except during dma cycles. during dma cycles, bioscs# is not generated. during reset: high after reset: high during pos: high kbccs#/ gpo26 o keyboard controller chip select. kbccs# is asserted during i/o read or write accesses to kbc locations 60h and 64h. it is driven combinatorially from the isa addresses sa[19:0] and la[23:17]. i f the keyboard controller does not require a separate chip select, this signal can be programmed to a general purpose output. during reset: high after reset: high during pos: high/gpo mccs# o microcontroller chip select. mccs# is asserted during i/o read or write accesses to io locations 62h and 66h. it is driven combinatorially from the isa addresses sa[19:0] and la[23:17]. during reset: high after reset: high during pos: high pcs0# pcs1# o programmable chip selects. these active low chip selects are asserted for isa i/o cycles which are generated by pci masters and which hit the programmable i/o ranges defined in the power management section. the x-bus buffer signals (xoe# and xdir#) are enabled while the chip select is active. (i.e., it is assumed that the peripheral which is selected via this pin resides on the x-bus.) during reset: high after reset: high during pos: high rcin# i reset cpu. this signal from the keyboard controller is used to generate an init signal to the cpu.
82371AB (piix4) e 22 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description rtcale/ gpo25 o real time clock address latch enable. rtcale is used to latch the appropriate memory address into the rtc. a write to port 70h with the appropriate rtc memory address that will be written to or read from causes rtcale to be asserted. rtcale is asserted on falling iow# and remains asserted for two sysclks. if the internal real time clock is used, this signal can be programmed as a general purpose output. during reset: low after reset: low during pos: low/gpo rtccs#/ gpo24 o real time clock chip select. rtccs# is asserted during read or write i/o accesses to rtc location 71h. rtccs# can be tied to a pair of external or gates to generate the real time clock read and write command signals. if the internal real time clock is used, this signal can be programmed as a general purpose output. during reset: high after reset: high during pos: high/gpo xdir#/ gpo22 o x-bus transceiver direction. xdir# is tied directly to the direction control of a 74?245 that buffers the x-bus data, xd[7:0]. xdir# is asserted (driven low) for all i/o read cycles regardless if the accesses is to a piix4 supported device. xdir# is asserted for memory cycles only if bios or apic space has been decoded. for pci master initiated read cycles, xdir# is asserted from the falling edge of either ior# or memr# (from memr# only if bios or apic space has been decoded), depending on the cycle type. for isa master-initiated read cycles, xdir# is asserted from the falling edge of either ior# or memr# (from memr# only if bios space has been decoded), depending on the cycle type. when the rising edge of ior# or memr# occurs, piix4 negates xdir#. for dma read cycles from the x-bus, xdir# is driven low from dackx# falling and negated from dackx# rising. at all other times, xdir# is negated high. if the x-bus not used, then this signal can be programmed to be a general purpose output. during reset: high after reset: high during pos: high / gpo xoe#/ gpo23 o x-bus transceiver output enable. xoe# is tied directly to the output enable of a 74?245 that buffers the x-bus data, xd[7:0], from the system data bus, sd[7:0]. xoe# is asserted anytime a piix4 supported x-bus device is decoded, and the devices decode is enabled in the x-bus chip select enable register (bioscs#, kbccs#, rtccs#, mccs#) or the device resource b (pccs0#) and device resource c (pccs1#). xoe# is asserted from the falling edge of the isa commands (ior#, iow#, memr#, or memw#) for pci master and isa master-initiated cycles. xoe# is negated from the rising edge of the isa command signals for pci master initiated cycles and the sa[16:0] and la[23:17] address for isa master-initiated cycles. xoe# is not generated during any access to an x-bus peripheral in which its decode space has been disabled. if an x-bus not used, then this signal can be programmed to be a general purpose output. during reset: high after reset: high during pos: high / gpo
e 82371AB (piix4) 23 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.1.4. dma signals name type description dack[0,1,2,3]# dack[5,6,7]# o dma acknowledge. the dack# output lines indicate that a request for dma service has been granted by piix4 or that a 16-bit master has been granted the bus. the active level (high or low) is programmed via the dma command register. these lines should be used to decode the dma slave device with the ior# or iow# line to indicate selection. if used to signal acceptance of a bus master request, this signal indicates when it is legal to assert master#. if the dreq goes inactive prior to dack# being asserted, the dack# signal will not be asserted. during reset: high after reset: high during pos: high dreq[0,1,2,3] dreq[5,6,7] i dma request. the dreq lines are used to request dma service from piix4?s dma controller or for a 16-bit master to gain control of the isa expansion bus. the active level (high or low) is programmed via the dma command register. all inactive to active edges of dreq are assumed to be asynchronous. the request must remain active until the appropriate dackx# signal is asserted. req[a:c]#/ gpi[2:4] i pc/pci dma request. these signals are the dma requests for pc/pci protocol. they are used by a pci agent to request dma services and follow the pci expansion channel passing protocol as defined in the pci dma section. if the pc/pci request is not needed, these pins can be used as general-purpose inputs. gnt[a:c]#/ gpo[9:11] o pc/pci dma acknowledge. these signals are the dma grants for pc/pci protocol. they are used by a piix4 to acknowledge dma services and follow the pci expansion channel passing protocol as defined in the pci dma section. if the pc/pci request is not needed, these pins can be used as general-purpose outputs. during reset: high after reset: high during pos: high/gpo tc o terminal count. piix4 asserts tc to dma slaves as a terminal count indicator. piix4 asserts tc after a new address has been output, if the byte count expires with that transfer. tc remains asserted until aen is negated, unless aen is negated during an autoinitialization. tc is negated before aen is negated during an autoinitialization. during reset: low after reset: low during pos: low
82371AB (piix4) e 24 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.1.5. interrupt controlle r/apic signals name type description apicack#/ gpo12 o apic acknowledge. this active low output signal is asserted by piix4 after its internal buffers are flushed in response to the apicreq# signal. when the i/o apic samples this signal asserted it knows that piix4?s buffers are flushed and that it can proceed to send the apic interrupt. the apicack# output is synchronous to pciclk. if the external apic is not used, then this is a general-purpose output. during reset: high after reset: high during pos: high/gpo apiccs#/ gpo13 o apic chip select. this active low output signal is asserted when the apic chip select is enabled and a pci originated cycle is positively decoded within the programmed i/o apic address space. if the external apic is not used, this pin is a general-purpose output. during reset: high after reset: high during pos: high/gpo apicreq#/ gpi5 i apic request. this active low input signal is asserted by an external apic device prior to sending an interrupt over the apic serial bus. when piix4 samples this pin active it will flush its f-type dma buffers pointing towards pci. once the buffers are flushed, piix4 asserts apicack# which indicates to the external apic that it can proceed to send the apic interrupt. the apicreq# input must be synchronous to pciclk. if the external apic is not used, this pin is a general-purpose input. intr od interrupt. s ee cpu interface signals. irq0/ gpo14 o interrupt request 0. this output reflects the state of the internal irq0 signal from the system timer. if the external apic is not used, this pin is a general-purpose output. during reset: low after reset: low during pos: irq0/gpo irq1 i interrupt request 1. irq1 is always edge triggered and can not be modified by software to level sensitive. a low to high transition on irq1 is latched by piix4. irq1 must remain asserted until after the interrupt is acknowledged. if the input goes inactive before this time, a default irq7 is reported in response to the interrupt acknowledge cycle.
e 82371AB (piix4) 25 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description irq 3:7, 9:11, 14:15 i interrupt requests 3:7, 9:11, 14:15. the irq signals provide both system board components and isa bus i/o devices with a mechanism for asynchronously interrupting the cpu. these interrupts may be programmed for either an edge sensitive or a high level sensitive assertion mode. edge sensitive is the default configuration. an active irq input must remain asserted until after the interrupt is acknowledged. if the input goes inactive before this time, a default irq7 is reported in response to the interrupt acknowledge cycle. irq8#/ gpi6 i/o irq 8#. irq8# is always an active low edge triggered interrupt and can not be modified by software. irq8# must remain asserted until after the interrupt is acknowledged. if the input goes inactive before this time, a default irq7 is reported in response to the interrupt acknowledge cycle. if using the internal rtc, then this can be programmed as a general-purpose input. if enabling an apic, this signal becomes an output and must not be programmed as a general purpose input. irq9out#/ gpo29 o irq9out#. irq9out# is used to route the internally generated sci and smbus interrupts out of the piix4 for connection to an external io apic. if apic is disabled, this signal pin is a general purpose output. during reset: high after reset: high during pos: irq9out#/gpo irq 12/m i interrupt request 12. in addition to providing the standard interrupt function as described in the pin description for irq[3:7,9:11,14:15], this pin can also be programmed to provide the mouse interrupt function. when the mouse interrupt function is selected, a low to high transition on this signal is latched by piix4 and an intr is generated to the cpu as irq12. an internal irq12 interrupt continues to be generated until a reset or an i/o read access to address 60h (falling edge of ior#) is detected. pirq[a:d]# i/od pci programmable interrupt request. the pirqx# signals are active low, level sensitive, shareable interrupt inputs. they can be individually steered to isa interrupts irq [3:7,9:12,14:15]. the usb controller uses pirqd# as its output signal. serirq/ gpi7 i/o serial interrupt request. serial interrupt input decoder, typically used in conjunction with the distributed dma protocol. if not using serial interrupts, this pin can be used as a general-purpose input.
82371AB (piix4) e 26 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.1.6. cpu interface signals name type description a20m# od address 20 mask. piix4 asserts a20m# to the cpu based on combination of port 92 register, bit 1 (fast_a20), and a20gate input signal. during reset: high-z after reset: high-z during pos: high-z cpurst od cpu reset. piix4 asserts cpurst to reset the cpu. piix4 asserts cpurst during power-up and when a hard reset sequence is initiated through the rc register. cpurst is driven inactive a minimum of 2 ms after pwrok is driven active. cpurst is driven active for a minimum of 2 ms when initiated through the rc register. the inactive edge of cpurst is driven synchronously to the rising edge of pciclk. if a hard reset is initiated through the rc register, piix4 resets its internal registers (in both core and suspend wells) to their default state. this signal is active high for pentium processor and active-low for pentium ii processor as determined by config1 signal. for values during reset , after reset , and during pos , see the suspend/resume and resume control signaling section. ferr# i numeric coprocessor error. this pin functions as a ferr# signal supporting coprocessor errors. this signal is tied to the coprocessor error signal on the cpu. if ferr# is asserted, piix4 generates an internal irq13 to its interrupt controller unit. piix4 then asserts the int output to the cpu. ferr# is also used to gate the ignne# signal to ensure that ignne# is not asserted to the cpu unless ferr# is active. ignne# od ignore numeric exception. this signal is connected to the ignore numeric exception pin on the cpu. ignne# is only used if the piix4 coprocessor error reporting function is enabled. if ferr# is active, indicating a coprocessor error, a write to the coprocessor error register (f0h) causes the ignne# to be asserted. ignne# remains asserted until ferr# is negated. if ferr# is not asserted when the coprocessor error register is written, the ignne# signal is not asserted. during reset: high-z after reset: high-z during pos: high-z init od initialization. init is asserted in response to any one of the following conditions. when the system reset bit in the reset control register is reset to 0 and the reset cpu bit toggles from 0 to 1, piix4 initiates a soft reset by asserting init. piix4 also asserts init if a shut down special cycle is decoded on the pci bus, if the rcin# signal is asserted, or if a write occurs to port 92h, bit 0. when asserted, init remains asserted for approximately 64 pci clocks before being negated. this signal is active high for pentium processor and active-low for pentium ii processor as determined by config1 signal. pentium processor: during reset: low after reset: low during pos: low pentium ii processor: during reset: high after reset: high during pos: high intr od cpu interrupt. intr is driven by piix4 to signal the cpu that an interrupt request is pending and needs to be serviced. it is asynchronous with respect to sysclk or pciclk and is always an output. the interrupt controller must be programmed following pcirst# to ensure that intr is at a known state. during reset: low after reset: low during pos: low
e 82371AB (piix4) 27 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description nmi od non-maskable interrupt. nmi is used to force a nonmaskable interrupt to the cpu. piix4 generates an nmi when either serr# or iochk# is asserted, depending on how the nmi status and control register is programmed. the cpu detects an nmi when it detects a rising edge on nmi. after the nmi interrupt routine processes the interrupt, the nmi status bits in the nmi status and control register are cleared by software. the nmi interrupt routine must read this register to determine the source of the interrupt. the nmi is reset by setting the corresponding nmi source enable/disable bit in the nmi status and control register. to enable nmi interrupts, the two nmi enable/disable bits in the register must be set to 0, and the nmi mask bit in the nmi enable/disable and real time clock address register must be set to 0. upon pcirst#, this signal is driven low. during reset: low after reset: low during pos: low slp# od sleep. this signal is output to the pentium ii processor in order to put it into sleep state. for pentium processor it is a no connect. during reset: high-z after reset: high-z during pos: high-z smi# od system management interrupt. smi# is an active low synchronous output that is asserted by piix4 in response to one of many enabled hardware or software events. the cpu recognizes the falling edge of smi# as the highest priority interrupt in the system, with the exception of init, cpurst, and flush. during reset: high-z after reset: high-z during pos: high-z stpclk# od stop clock. stpclk# is an active low synchronous output that is asserted by piix4 in response to one of many hardware or software events. stpclk# connects directly to the cpu and is synchronous to pciclk. during reset: high-z after reset: high-z during pos: high-z
82371AB (piix4) e 28 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.1.7. clocking signals name type description clk48 i 48-mhz clock. 48-mhz clock used by the internal usb host controller. this signal may be stopped during suspend modes. pciclk i free-running pci clock. a clock signal running at 30 or 33 mhz, pciclk provides timing for all transactions on the pci bus. all other pci signals are sampled on the rising edge of pciclk, and all timing parameters are defined with respect to this edge. because many of the circuits in piix4 run off the pci clock, this signal must be kept active, even if the pci bus clock is not active. osc i 14.31818-mhz clock. clock signal used by the internal 8254 timer. this clock signal may be stopped during suspend modes. rtcx1, rtcx2 i/o rtc crystal inputs: these connected directly to a 32.768-khz crystal. external capacitors are required. these clock inputs are required even if the internal rtc is not being used. susclk o suspend clock. 32.768-khz output clock provided to the host-to-pci bridge used for maintenance of dram refresh. this signal is stopped during suspend-to-disk and soft off modes. for values during reset, after reset, and during pos, see the suspend/resume and resume control signaling section. sysclk o isa system clock. sysclk is the reference clock for the isa bus. it drives the isa bus directly. the sysclk is generated by dividing pciclk by 4. the sysclk frequencies supported are 7.5 mhz and 8.33 mhz. for pci accesses to the isa bus, sysclk may be stretched low to synchronize bale falling to the rising edge of sysclk. during reset: running after reset: running during pos: low 2.1.8. ide signals name type description pda[2:0] o primary disk address[2:0]. these signals indicate which byte in either the ata command block or control block is being addressed. if the ide signals are configured for primary and secondary, these signals are connected to the corresponding signals on the primary ide connector. if the ide signals are configured for primary 0 and primary 1, these signals are used for the primary 0 connector. during reset: high-z after reset: undefined 1 during pos: pda pdcs1# o primary disk chip select for 1f0h - - 1f7h range. for ata command register block. if the ide signals are configured for primary and secondary, this output signal is connected to the corresponding signal on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector. during reset: high after reset: high during pos: high
e 82371AB (piix4) 29 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description pdcs3# o primary disk chip select for 3f0 - - 3f7 range. for ata control register block. if the ide signals are configured for primary and secondary, this output signal is connected to the corresponding signal on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector. during reset: high after reset: high during pos: high pdd[15:0] i/o primary disk data[15:0]. t hese signals are used to transfer data to or from the ide device. if the ide signals are configured for primary and secondary, these signals are connected to the corresponding signals on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector. during reset: high-z after reset: undefined 1 during pos: pdd pddack# o primary dma acknowledge. this signal directly drives the ide device dmack# signal. it is asserted by piix4 to indicate to ide dma slave devices that a given data transfer cycle (assertion of pdior# or pdiow#) is a dma data transfer cycle. this signal is used in conjunction with the pci bus master ide function. it is not associated with any at compatible dma channel. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector. during reset: high after reset: high during pos: high pddreq i primary disk dma request. this input signal is directly driven from the ide device dmarq signal. it is asserted by the ide device to request a data transfer, and used in conjunction with the pci bus master ide function. it is not associated with any at compatible dma channel. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector.
82371AB (piix4) e 30 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description pdior# o primary disk io read. in normal ide this is the command to the ide device that it may drive data onto the pdd[15:0] lines. data is latched by piix4 on the negation edge of pdior#. the ide device is selected either by the ata register file chip selects (pdcs1#, pdcs3#) and the pda[2:0] lines, or the ide dma slave arbitration signals (pddack#). in an ultra dma/33 read cycle, this signal is used as dmardy# which is negated by the piix4 to pause ultra dma/33 transfers. in an ultra dma/33 write cycle, this signal is used as the strobe signal, with the drive latching data on rising and falling edges of strobe. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector. during reset: high after reset: high during pos: high pdiow# o primary disk io write. in normal ide mode, this is the command to the ide device that it may latch data from the pdd[15:0] lines. data is latched by the ide device on the negation edge of pdiow#. the ide device is selected either by the ata register file chip selects (pdcs1#, pdcs3#) and the pda[2:0] lines, or the ide dma slave arbitration signals (pddack#). for ultra dma/33 mode, this signal is used as the stop signal, which is used to terminate an ultra dma/33 transaction. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector. during reset: high after reset: high during pos: high-z piordy i primary io channel ready. in normal ide mode, this input signal is directly driven by the corresponding ide device iordy signal. in an ultra dma/33 read cycle, this signal is used as strobe, with the piix4 latching data on rising and falling edges of strobe. in an ultra dma/33 write cycle, this signal is used as the dmardy# signal which is negated by the drive to pause ultra dma/33 transfers. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the primary ide connector. if the ide signals are configured for primary master and primary slave, this signal is used for the primary master connector. this is a schmitt triggered input.
e 82371AB (piix4) 31 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description sda[2:0] o secondary disk address[2:0]. these signals indicate which byte in either the ata command block or control block is being addressed. if the ide signals are configured for primary and secondary, these signals are connected to the corresponding signals on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. during reset: high-z after reset: undefined 1 during pos: sda sdcs1# o secondary chip select for 170h - - 177h range. for ata command register block. if the ide signals are configured for primary and secondary, this output signal is connected to the corresponding signal on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. during reset: high after reset: high during pos: high sdcs3# o secondary chip select for 370h - - 377h range. for ata control register block. if the ide signals are configured for primary and secondary, this output signal is connected to the corresponding signal on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. during reset: high after reset: high during pos: high-z sdd[15:0] i/o secondary disk data[15:0]. t hese signals are used to transfer data to or from the ide device. if the ide signals are configured for primary and secondary, these signals are connected to the corresponding signals on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. during reset: high-z after reset: undefined 1 during pos: sdd sddack# o secondary dma acknowledge. this signal directly drives the ide device dmack# signal. it is asserted by piix4 to indicate to ide dma slave devices that a given data transfer cycle (assertion of sdior# or sdiow#) is a dma data transfer cycle. this signal is used in conjunction with the pci bus master ide function. it is not associated with any at compatible dma channel. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. during reset: high after reset: high during pos: high
82371AB (piix4) e 32 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description sddreq i secondary disk dma request. this input signal is directly driven from the ide device dmarq signal. it is asserted by the ide device to request a data transfer, and used in conjunction with the pci bus master ide function. it is not associated with any at compatible dma channel. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. sdior# o secondary disk io read. in normal ide mode, this is the command to the ide device that it may drive data onto the sdd[15:0] lines. data is latched by the piix4 on the negation edge of sdior#. the ide device is selected either by the ata register file chip selects (sdcs1#, sdcs3#) and the sda[2:0] lines, or the ide dma slave arbitration signals (sddack#). in an ultra dma/33 read cycle, this signal is used as dmardy# which is negated by the piix4 to pause ultra dma/33 transfers. in an ultra dma/33 write cycle, this signal is used as the strobe signal, with the drive latching data on rising and falling edges of strobe. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. during reset: high after reset: high during pos: high sdiow# o secondary disk io write. in normal ide mode, this is the command to the ide device that it may latch data from the sdd[15:0] lines. data is latched by the ide device on the negation edge of sdiow#. the ide device is selected either by the ata register file chip selects (sdcs1#, sdcs3#) and the sda[2:0] lines, or the ide dma slave arbitration signals (sddack#). in read and write cycles this signal is used as the stop signal, which is used to terminate an ultra dma/33 transaction. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. during reset: high after reset: high during pos: high
e 82371AB (piix4) 33 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description siordy i secondary io channel ready. in normal ide mode, this input signal is directly driven by the corresponding ide device iordy signal. in an ultra dma/33 read cycle, this signal is used as strobe, with the piix4 latching data on rising and falling edges of strobe. in an ultra dma write cycle, this signal is used as the dmardy# signal which is negated by the drive to pause ultra dma/33 transfers. if the ide signals are configured for primary and secondary, this signal is connected to the corresponding signal on the secondary ide connector. if the ide signals are configured for primary master and primary slave, these signals are used for the primary slave connector. this is a schmitt triggered input. notes: 1. after reset, all undefined signals on the primary channel will default to the same values as the undefined signals on the secondary channel. 2.1.9. universal serial bu s signals name type description oc[1:0]# i over current detect. t hese signals are used to monitor the status of the usb power supply lines. the corresponding usb port is disabled when its over current signal is asserted. usbp0+, usbp0 ? i/o serial bus port 0. t his signal pair comprises the differential data signal for usb port 0. during reset: high-z after reset: high-z during pos: high-z usbp1+, usbp1 ? i/o serial bus port 1. t his signal pair comprises the differential data signal for usb port 1. during reset: high-z after reset: high-z during pos: high-z 2.1.10. power management si gnals name type description batlow#/ gpi9 i battery low. indicates that battery power is low. piix4 can be programmed to prevent a resume operation when the batlow# signal is asserted. if the battery low function is not needed, this pin can be used as a general-purpose input. cpu_stp#/ gpo17 o cpu clock stop. active low control signal to the clock generator used to disable the cpu clock outputs. if this function is not needed, then this signal can be used as a general-purpose output. for values during reset , after reset , and during pos , see the suspend/resume and resume control signaling section.
82371AB (piix4) e 34 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description extsmi# i/od external system management interrupt. extsmi# is a falling edge triggered input to piix4 indicating that an external device is requesting the system to enter smm mode. when enabled, a falling edge on extsmi# results in the assertion of the smi# signal to the cpu. extsmi# is an asynchronous input to piix4. however, when the setup and hold times are met, it is only required to be asserted for one pciclk. once negated extsmi# must remain negated for at least four pciclks to allow the edge detect logic to reset. extsmi# is asserted by piix4 in response to smi# being activated within the serial irq function. an external pull-up should be placed on this signal. lid/ gpi10 i lid input. this signal can be used to monitor the opening and closing of the display lid of a notebook computer. it can be used to detect both low to high transition or a high to low transition and these transitions will generate an smi# if enabled. this input contains logic to perform a 16-ms debounce of the input signal. if the lid function is not needed, this pin can be used as a general-purpose input. pcireq[a:d]# i pci request. power management input signals used to monitor pci master requests for use of the pci bus. they are connected to the corresponding req[0:3]# signals on the host bridge. pci_stp#/ gpo18 o pci clock stop. active low control signal to the clock generator used to disable the pci clock outputs. the piix4 free running pciclk input must remain on. if this function is not needed, this pin can be used as a general-purpose output. for values during reset , after reset , and during pos , see the suspend/resume and resume control signaling section. pwrbtn# i power button. input used by power management logic to monitor external system events, most typically a system on/off button or switch. this input contains logic to perform a 16-ms debounce of the input signal. ri# gpi12 i ring indicate. input used by power management logic to monitor external system events, most typically used for wake up from a modem. if this function is not needed, then this signal can be individually used as a general-purpose input. rsmrst# i resume reset. this signal resets the internal suspend well power plane logic and portions of the rtc well logic. smbalert#/ gpi11 i sm bus alert. input used by system management bus logic to generate an interrupt (irq or smi) or power management resume event when enabled. if this function is not needed, this pin can be used as a general-purpose input. smbclk i/o sm bus clock. system management bus clock used to synchronize transfer of data on smbus. during reset: high-z after reset: high-z during pos: high-z smbdata i/o sm bus data. serial data line used to transfer data on smbus. during reset: high-z after reset: high-z during pos: high-z susa# o suspend plane a control. control signal asserted during power management suspend states. susa# is primarily used to control the primary power plane. this signal is asserted during pos, str, and std suspend states. during reset: low after reset: high during pos: low
e 82371AB (piix4) 35 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description susb#/ gpo15 o suspend plane b control. control signal asserted during power management suspend states. susb# is primarily used to control the secondary power plane. this signal is asserted during str and std suspend states. if the power plane control is not needed, this pin can be used as a general-purpose output. during reset: low after reset: high during pos: high/gpo susc#/ gpo16 o suspend plane c control. control signal asserted during power management suspend states, primarily used to control the tertiary power plane. it is asserted only during std suspend state. if the power plane control is not needed, this pin can be used as a general-purpose output. during reset: low after reset: high during pos: high/gpo sus_stat1#/ gpo20 o suspend status 1. this signal is typically connected to the host-to-pci bridge and is used to provide information on host clock status. sus_stast1# is asserted when the system may stop the host clock, such as stop clock or during pos, str, and std suspend states. if this function is not needed, this pin can be used as a general-purpose output. during reset: low after reset: high during pos: low/gpo sus_stat2#/ gpo21 o suspend status 2. this signal will typically connect to other system peripherals and is used to provide information on system suspend state. it is asserted during pos, str, and std suspend states. if this function is not needed, this pin can be used as a general-purpose output. during reset: low after reset: high during pos: low/gpo thrm#/ gpi8 i thermal detect. active low signal generated by external hardware to start the hardware clock throttling mode. if enabled, the external hardware can force the system to enter into hardware clock throttle mode by asserting thrm#. this causes piix4 to cycle stpclk# at a preset programmable rate. if this function is not needed, this pin can be used as a general-purpose input. zz/ gpo19 o low-power mode for l2 cache sram. this signal is used to power down a cache?s data srams when the clock logic places the cpu into the stop clock. if this function is not needed, this pin can be used as a general-purpose output. during reset: low after reset: low during pos: low 2.1.11. general purpose inp ut and output signals some of the general purpose input and output signals are multiplexed with other piix4 signals. the usage is determined by the system configuration. the default pin usage is shown in table 1 and table 2 . the configuration can be selected via the general configuration register and x-bus chip select register. name type description gpi[21:0] i general purpose inputs. these input signals can be monitored via the gpireg register located in function 3 (power management) system io space at address pmbase+30h. see table 1 for details.
82371AB (piix4) e 36 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary name type description gpo[30:0] o general purpose outputs. these output signals can be controlled via the gpireg register located in function 3 (power management) system io space at address pmbase+34h. if a gpo pin is not multiplexed with another signal or defaults to gpo, then its state after reset is the reset condition of the gporeg register. if the gpo defaults to another signal, then it defaults to that signal?s state after reset. the gpo pins that default to gpo remain stable after reset. the others may toggle due to system boot or power control sequencing after reset prior to their being programmed as gpos. the gpo8 signal is driven low upon removal of power from the piix4 core power plane. all other gpo signals are invalid (buffers powered off). table 1 . gpi signals signal name multiplexed with default control register and bit (pci function 1) notes gpi0 iochk# gpi gencfg bit 0 available as gpi only if in eio bus mode. gpi1# gpi non-multiplexed gpi which is always available. this signal when used by power management logic is active low. gpi[2:4] req[a:c]# gpi gencfg bits 8 ? 10 not available as gpi if used for pc/pci. can be individually enabled, so for instance, gpi[4] is available if req[c]# is not used. gpi5 apicreq# gpi xbcs bit 8 not available as gpi if using an external apic. gpi6 irq8# gpi gencfg bit 14 not available as gpi if using external rtc or external apic. gpi7 serirq gpi gencfg bit 16 not available as gpi if using serial irq protocol. gpi8 thrm# thrm# gencfg bit 23 not available as gpi if using thermal monitoring. gpi9 batlow# batlow# gencfg bit 24 not available as gpi if using battery low feature. gpi10 lid# lid gencfg bit 25 not available as gpi if using lid feature. gpi11 smbalert# smbalert# gencfg bit 15 not available as gpi if using smbalert feature gpi12 ri# ri# gencfg bit 27 not available if using ring indicator feature gpi[13:21] gpi non-multiplexed gpis which are always available.
e 82371AB (piix4) 37 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 2 . gpo signals signal name multiplexed with default control register and bit (pci function 1) notes gpo0 gpo non-multiplexed gpo which is always available. gpo[1:7] la[17:23] gpo gencfg bit 0 available as gpo only if eio mode. gpo8 gpo non-multiplexed gpo which is always available. the gpo[8] signal will be driven low upon removal of power from the piix4 core power plane. gpo[9:11] gnt[a:c]# gpo gencfg bits [8:10] not available as gpo if using for pc/pci. can be individually enabled, so gpo[11] is available if req[c]# not used. gpo12 apicack# gpo xbcs bit 8 not available as gpo if using external apic. gpo13 apiccs# gpo xbcs bit 8 not available as gpo if using external apic. gpo14 irq0 gpo xbcs bit 8 not available as gpo if using external apic. gpo15 susb# susb# gencfg bit 17 not available as gpo if using for power management. gpo16 susc# susc# gencfg bit 17 not available as gpo if using for power management. gpo17 cpu_stp# cpu_stp# gencfg bit 18 not available as gpo if using for clock control. gpo18 pci_stp# pci_stp# gencfg bit 19 not available as gpo if using for clock control. gpo19 zz zz gencfg bit 20 not available as gpo if using for power management. gpo20 sus_stat1# sus_stat1# gencfg bit 21 not available as gpo if using for power management. gpo21 sus_stat2# sus_stat2# gencfg bit 22 not available as gpo if using for power management. gpo22 xdir# xdir# gencfg bit 28 not available as gpo if using x-bus transceiver. gpo23 xoe# xoe# gencfg bit 28 not available as gpo if using x-bus transceiver.
82371AB (piix4) e 38 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 2 . gpo signals signal name multiplexed with default control register and bit (pci function 1) notes gpo24 rtccs# rtccs# gencfg bit 29 not available as gpo if using external rtc that doesn?t do self decode. gpo25 rtcale rtcale gencfg bit 30 not available as gpo if using external rtc that doesn?t do self decode. gpo26 kbccs# kbccs# gencfg bit 31 not available as gpo if using external kbc that doesn?t do self decode. gpo[27:28] gpo non-multiplexed gpos which are always available. gpo29 irq9out# gpo xbcs bit 8 not available as gpo if using external apic. this signal is used for irq9 output in apic mode, where it is level triggered, active low. gpo30 gpo non-multiplexed gpo which is always available.
e 82371AB (piix4) 39 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.1.12. other system and te st signals name type description config1 i configuration select 1. t his input signal is used to select the type of microprocessor being used in the system. if config1=0, the system contains a pentium microprocessor. if config1=1, the system contains a pentium ii microprocessor. it is used to control the polarity of init and cpurst signals. config2 i configuration select 2. t his input signal is used to select the positive or subtractive decode of ffff0000h ? ffffffffh memory address range (top 64 kbytes). if config[2]=0, the piix4 will positively decode this range. if config[2]=1, the piix4 will decode this range with subtractive decode timings only. the input value of this pin must be static and may not dynamically change during system operations. pwrok i power ok. when asserted, pwrok is an indication to piix4 that power and pciclk have been stable for at least 1 ms. pwrok can be driven asynchronously. when pwrok is negated, piix4 asserts cpurst, pcirst# and rstdrv. when pwrok is driven active (high), piix4 negates cpurst, pcirst#, and rstdrv. spkr o speaker. the spkr signal is the output of counter timer 2 and is internally ? anded ? with port 061h bit 1 to provide the speaker data enable. this signal drives an external speaker driver device, which in turn drives the isa system speaker. during reset: low after reset: low during pos: last state test# i test mode select. the test signal is used to select various test modes of piix4. this signal must be pulled up to v cc (sus) for normal operation. 2.1.13. power and ground pi ns name type description v cc v core voltage supply. t hese pins are the primary voltage supply for the piix4 core and io periphery and must be tied to 3.3v. v cc (rtc) v rtc well voltage supply. this pin is the supply voltage for the rtc logic and must be tied to 3.3v. v cc (sus) v suspend well voltage supply. t hese pins are the primary voltage supply for the piix4 suspend logic and io signals and must be tied to 3.3v. v cc (usb) v usb voltage supply. this pin is the supply voltage for the usb input/output buffers and must be tied to 3.3v. v ref v voltage reference. this pin is used to provide a 5v reference voltage for 5v safe input buffers. v ref must be tied to 5v in a system requiring 5v tolerance. in a 5v tolerant system, this signal must power up before or simultaneous to v cc . it must power down after or simultaneous to v cc . in a non-5v tolerant system (3.3v only), this signal can be tied directly to v cc . there are then no sequencing requirements. v ss v core ground. t hese pins are the primary ground for piix4. v ss (usb) v usb ground. this pin is the ground for the usb input/output buffers.
82371AB (piix4) e 40 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.2. power planes piix4 has three primary internal power planes. these power planes permit parts of piix4 to power down to conserve battery life. table 3 shows the internal planes and their uses. table 3 . piix4 internal power planes power plane description signals powered v cc pins gnd pins rtc contains the real-time clock and 256 bytes of battery-backed sram. this plane is always powered if the internal rtc is used. if the internal rtc is not used, it may be connected to the suspend plane. typically, powered via ? coin-cell ? lithium battery. the input signals attached to the rtc power plane do not support 5 volt input levels. these signals must not exceed v cc (rtc). there is no reset signal for this power plane. pwrok, rsmrst#, rtcx1, rtcx2 v cc (rtc) v ss suspend contains the logic needed to resume from the suspend-to-disk and suspend-to-ram states. this plane will typically be powered by a power supply which is capable of providing a ? trickle ? current. the input signals attached to the suspend power plane do not support 5 volt input levels. these signals must not exceed v cc (sus). this plane is reset by assertion of the rsmrst# signal. batlow#, config[1:2], extsmi# gpi1, gpo8, irq8#, lid, ri# smbalert#, smbclk smbdata, pwrbtn# sus[a:c]#, susclk sus_stat[1:2]#, test# v cc (sus) v ss usb contains the usb input/output buffers. usbp0+, usbp0 ? usbp1+, usbp1 ? v cc (usb) v ss (usb) core contains all the rest of the piix4 logic. this plane is powered by the main system power supply. all input signals within this plane are 5v tolerant except ferr#. this plane is reset by negation of the pwrok signal. all other signal pins v cc v ss
e 82371AB (piix4) 41 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 2.3. power sequencing requirements there are no power sequencing requirements for the various v cc power supplies to piix4. the v ref signal must be tied to 5v in a system requiring 5v tolerance. in a 5v tolerant system, this signal must power up before or simultaneous to v cc . it must power down after or simultaneous to v cc . in a non-5v tolerant system (3.3v only), this signal can be tied directly to v cc . there are then no sequencing requirements. refer to figure 2 for an example circuit schematic that may be used to ensure the proper v ref sequencing. vcc supply (3.3v) 5v supply 1k w 1f to system v ref to system pix4_01 figure 2 . example v cc 5 ref sequencing circuit
82371AB (piix4) e 42 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 3. 0. register address space piix4 internal registers are organized into four functions ? isa bridge with integrated at compatibility logic, ide controller, usb host controller, and enhanced power management. each function has its registers divided into one set of pci configuration registers and one or more register sets located in system io space. some of the piix4 registers contain reserved bits. software must deal correctly with fields that are reserved. on reads, software must use appropriate masks to extract the defined bits and not rely on reserved bits being any particular value. on writes, software must ensure that the values of reserved bit positions are preserved. that is, the values of reserved bit positions must first be read, merged with the new values for other bit positions and then written back. in addition to reserved bits within a register, the piix4 contains address locations in the pci configuration space that are marked ? reserved. ? the piix4 responds to accesses to these address locations by completing the host cycle. software should not write to reserved piix4 configuration locations in the device-specific region (above address offset 3fh). during a hard reset, the piix4 sets its internal registers to predetermined default states. the default values are indicated in the individual register descriptions. the following notation is used to describe register access attributes: ro read only . if a register is read only, writes have no effect. wo write only . if a register is write only, reads have no effect. r/w read/write . a register with this attribute can be read and written. note that individual bits in some read/write registers may be read only. r/wc read/write clear . a register bit with this attribute can be read and written. however, a write of a 1 clears (sets to 0) the corresponding bit and a write of a 0 has no effect. 3.1. pci/isa bridge configuration the piix4 pci function 0 contains a pci to isa bridge along with standard at compatible logic including dma controller, interrupt controller, and counter/timers. this function also contains support for a real time clock and pci based dma. the register set associated with pci to isa bridge and associated logic is shown below with actual register descriptions given in the ? pci to isa/eio bridge register description ? section.
e 82371AB (piix4) 43 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 3.1.1. pci configuration r egisters (function 0) table 4 . pci configuration registers ? function 0 (pci to isa bridge) offset address mnemonic register name access 00 ? 01h vid vendor identification ro 02 ? 03h did device identification ro 04 ? 05h pcicmd pci command r/w 06 ? 07h pcists pci device status r/w 08h rid revision identification ro 09 - 0bh classc class code ro 0c ? 0dh ? reserved ? 0eh hedt header type ro 0f ? 4bh ? reserved ? 4ch ior isa i/o recovery timer r/w 4dh ? reserved ? 4e ? 4fh xbcs x-bus chip select r/w 50 ? 5fh ? reserved ? 60 ? 63h pirqrc[a:d] pirqx route control r/w 64h serirqc serial irq control r/w 65 ? 68h ? reserved ? 69h tom top of memory r/w 6a ? 6bh mstat miscellaneous status r/w 6c ? 75h ? reserved ? 76 ? 77h mbdma[1:0] motherboard device dma control r/w 78 ? 7fh ? reserved ? 80h apicbase apic base address relocation r/w 81h ? reserved ? 82h dlc deterministic latency control r/w 83 ? 8fh ? reserved ? 90 - 91h pdmacfg pci dma configuration r/w 92 - 95h ddmabase distributed dma slave base pointer r/w 96 - afh ? reserved ? b0 - b3h gencfg general configuration r/w b4 - cah ? reserved ? cbh rtccfg real time clock configuration r/w cc ? ffh ? reserved ?
82371AB (piix4) e 44 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 3.1.2. io space registers table 5 . isa-compatible registers address aliased addresses type register name access 0000h 0010h r/w dma1 ch0 base and current address (ch0) pci 0001h 0011h r/w dma1 ch0 base and current count (ch0) pci 0002h 0012h r/w dma1 ch1 base and current address (ch1) pci 0003h 0013h r/w dma1 ch1 base and current count (ch1) pci 0004h 0014h r/w dma1 ch2 base and current address (ch2) pci 0005h 0015h r/w dma1 ch2 base and current count (ch2) pci 0006h 0016h r/w dma1 ch3 base and current address (ch3) pci 0007h 0017h r/w dma1 ch3 base and current count (ch3) pci 0008h 0018h r/w dma1 status(r) command(w) register pci 0009h 0019h wo dma1 request pci 000ah 001ah wo dma1 write single mask bit pci 000bh 001bh wo dma1 channel mode pci 000ch 001ch wo dma1 clear byte pointer pci 000dh 001dh wo dma1 master clear pci 000eh 001eh wo dma1 clear mask pci 000fh 001fh r/w dma1 read/write all mask bits pci 0020h 0024h, 0028h, 002ch, 0030h, 0034h, 0038h, 003ch r/w initialization command word 1 (int-1) operational command word 2 (int-1) operational command word 3 (int-1) pci/isa 0021h 0025h, 0029h, 002dh, 0031h, 0035h, 0039h, 003dh r/w initialization command word 2 (int-1) initialization command word 3 (int-1) initialization command word 4 (int-1) operational command word 1 (int-1) pci/isa 0040h 0050h r/w timer count ? counter 0 timer status ? counter 0 (ro) pci/isa 0041h 0051h r/w timer count ? counter 1 timer status ? counter 1 (ro) pci/isa 0042h 0052h r/w timer count ? counter 2 timer status ? counter 2 (r o) pci/isa 0043h 0053h wo timer control word pci/isa 0060h 1 ro reset x-bus irq12/m and irq1 pci/isa 0061h 0063h, 0065h, 0067h r/w nmi status and control pci/isa
e 82371AB (piix4) 45 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 5 . isa-compatible registers address aliased addresses type register name access 0070h 2 0072h, 3 0074h, 0076h wo nmi enable pci/isa 0070h 2 0072h, 3 0074h, 0076h wo rtc index pci/isa 0071h 2 0073h, 4 0075h, 0077h r/w rtc data pci/isa 0072h r/w rtc extended index pci/isa 0073h r/w rtc extended data pci/isa 0080h 5,6 0090h r/w dma1 page (reserved) pci/isa 0081h 5 0091h r/w dma1 ch2 low page (ch2) pci/isa 0082h 5 r/w dma1 ch3 low page (ch3) pci/isa 0083h 5 0093h r/w dma1 ch1 low page (ch1) pci/isa 0084h 5,6 0094h r/w dma1 page (reserved) pci/isa 0085h 5,6 0095h r/w dma1 page (reserved) pci/isa 0086h 5,6 0096h r/w dma1 page (reserved) pci/isa 0087h 5 0097h r/w dma1 ch0 low page (ch0) pci/isa 0088h 5,6 0098h r/w dma page (reserved) pci/isa 0089h 5 0099h r/w dma2 ch2 low page (ch6) pci/isa 008ah 5 009ah r/w dma2 ch3 low page (ch7) pci/isa 008bh 5 009bh r/w dma2 ch1 low page (ch5) pci/isa 008ch 5,6 009ch r/w dma2 page (reserved) pci/isa 008dh 5,6 009dh r/w dma2 page (reserved) pci/isa 008eh 5,6 009eh r/w dma2 page (reserved) pci/isa 008fh 5 009fh r/w dma2 low page refresh pci/isa 0092h r/w port 92 pci/isa 00a0h 00a4h, 00a8h, 00ach, 00b0h, 00b4h, 00b8h, 00bch r/w initialization command word 1 (int-2) operational command word 2 (int-2) operational command word 3 (int-2) pci/isa 00a1h 00a5h, 00a9h, 00adh, 00b1h, 00b5h, 00b9h, 00bdh r/w initialization command word 2 (int-2) initialization command word 3 (int-2) initialization command word 4 (int-2) operational command word 1 (int-2) pci/isa
82371AB (piix4) e 46 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 5 . isa-compatible registers address aliased addresses type register name access 00b2h r/w advanced power management control pci 00b3h r/w advanced power management status pci 00c0h 00c1h r/w dma2 ch0 base and current address (ch4) pci 00c2h 00c3h r/w dma2 ch0 base and current count (ch4) pci 00c4h 00c5h r/w dma2 ch1 base and current address (ch5) pci 00c6h 00c7h r/w dma2 ch1 base and current count (ch5) pci 00c8h 00c9h r/w dma2 ch2 base and current address (ch6) pci 00cah 00cbh r/w dma2 ch2 base and current count (ch6) pci 00cch 00cdh r/w dma2 ch3 base and current address (ch7) pci 00ceh 00cfh r/w dma2 ch3 base and current count (ch7) pci 00d0h 00d1h r/w dma2 status(r) command(w) pci 00d2h 00d3h wo dma2 request pci 00d4h 00d5h wo dma2 write single mask bit pci 00d6h 00d7h wo dma2 channel mode pci 00d8h 00d9h wo dma2 clear byte pointer pci 00dah 00dbh wo dma2 master clear pci 00dch 00ddh wo dma2 clear mask pci 00deh 00dfh r/w dma2 read/write all mask register bits pci 00f0h 1 wo coprocessor error pci/isa 04d0h r/w intc-1 edge/level control pci/isa 04d1h r/w intc-2 edge/level control pci/isa 0cf9h r/w reset control pci notes: 1. read and write accesses to these locations are always broadcast to the isa bus. 2. read and write accesses to these locations are broadcast to the isa bus, only if internal rtc is disabled in rtccfg register. 3. not aliased to 0072h or 0076h if extended ram enabled. 4. not aliased to 0073h or 0077h if extended ram enabled. 5. the piix4 does not support distributed dm a functionality for the 90h range, even if aliasing is enabled. 6. write accesses to these locations are broadcast to the isa bus. read accesses are not. if programmed in the isa i/o recovery timer register, piix4 does not alias the entire 90h ? 9fh address range. these locations are considered isa bus register locations and not piix4 registers.
e 82371AB (piix4) 47 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 3.2. ide configuration the piix4 pci function 1 contains an ide controller capable of standard programmed io (pio) transfers as well as bus master transfer capability. this function also supports the ? ultra dma/33 ? synchronous dma mode of data transfer. the register set associated with ide controller is shown below with the actual register descriptions given in the ? ide controller register descriptions ? section. 3.2.1. pci configuration r egisters (function 1) table 6 . pci configuration registers ? function 1 (ide interface) address offset mnemonic register name access 00 ? 01h vid vendor identification ro 02 ? 0 3h did device identification ro 04 ? 05h pcicmd pci command r/w 06 ? 07h pcists pci device status r/w 08h rid revision identification ro 09 - 0bh classc class code ro 0ch ? reserved ? 0dh mlt master latency timer r/w 0eh hedt header type ro 0f ? 1fh ? reserved ? 20 ? 23h bmiba bus master interface base address r/w 24 ? 3fh ? reserved ? 40 ? 43h idetim ide timing r/w 44h sidetim slave ide timing r/w 45 ? 47h ? reserved ? 48h udmactl ultra dma/33 control r/w 49h ? reserved ? 4a ? 4bh udmatim ultra dma/33 timing r/w 4c ? ffh ? reserved ?
82371AB (piix4) e 48 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 3.2.2. io space registers table 7 . pci bus master ide i/o registers offset from base address mnemonic register name access 00h bmicp bus master ide command (primary) r/w 01h ? reserved ? 02h bmisp bus master ide status (primary) r/w 03h ? reserved ? 04 ? 07h bmidtpp bus master ide descriptor table pointer (primary) r/w 08h bmics bus master ide command (secondary) r/w 09h ? reserved ? 0ah bmiss bus master ide status (secondary) r/w 0bh ? reserved ? 0c ? 0fh bmidtps bus master ide descriptor table pointer (secondary) r/w notes: 1. the base address is programmable via the bmiba register (20 - 23h; function 1) 3.3. universal serial bus (usb) configuration the piix4 pci function 2 contains a universal serial bus host and root hub with two connected usb ports. this function supports the universal host controller interface (uhci). the register set associated with usb host controller is shown below with actual register descriptions given in the ? usb host controller register descriptions ? section. 3.3.1. pci configuration r egisters (function 2) table 8 . pci configuration registers ? function 2 (usb interface) address offset mnemonic register name access 00 ? 01h vid vendor identification ro 02 ? 03h did device identification ro 04 ? 05h pcicmd pci command r/w 06 ? 07h pcists pci device status r/w 08h rid revision identification ro 09 - 0bh classc class code ro 0ch ? reserved ? 0dh mlt latency timer r/w 0eh hedt header type ro 0f ? 1fh ? reserved ? 20 ? 23h usbba usb io space base address r/w 24 ? 3bh ? reserved ?
e 82371AB (piix4) 49 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 8 . pci configuration registers ? function 2 (usb interface) address offset mnemonic register name access 3ch intln interrupt line r/w 3dh intpn interrupt pin ro 3e ? 5fh ? reserved ? 60h sbrnum serial bus release number ro 61 ? bfh ? reserved ? c0 ? c1h legsup legacy support r/w c2 ? ffh ? reserved ro 3.3.2. io space registers table 9 . usb host/controller i/o registers offset from base address mnemonic register name access 00 - 01h usbcmd usb command r/w 2 02 - 03h usbsts usb status r/wc 04 - 05h usbintr usb interrupt enable r/w 06 - 07h frnum frame number r/w 2 08 - 0bh flbaseadd frame list base address r/w 0ch sofmod start of frame modify r/w 10 - 11h portsc0 port 0 status and control r/wc 2 12 - 13h portsc1 port 1 status and control r/wc 2 notes: 1. the base address is programmable via the usbba register (20 - 23h; function 2) 2. these registers are word writeable only. byte writes to these registers have unpredictable effects.
82371AB (piix4) e 50 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 3.4. power management configuration the piix4 pci function 3 contains enhanced power management logic with support for device management, suspend and resume states, and system clock control. this function also supports a system management bus (smbus) host and slave interface. the register set associated with power management and smbus controller is shown below with actual register descriptions given in section 0 . table 10 . pci configuration registers (function 3) address offset mnemonic register name access 00 ? 01h vid vendor identification ro 02 ? 03h did device identification ro 04 ? 05h pcicmd pci command r/w 06 ? 07h pcists pci device status r/wc 08h rid revision identification ro 09 - 0bh classc class code ro 0c ? 0dh ? reserved ? 0eh hedt header type ro 0f ? 3bh ? reserved ? 3ch intln interrupt line r/w 3dh intpn interrupt pin ro 3e ? 3fh ? reserved ? 40 ? 43h pmba power management base address r/w 44 ? 47h cnta count a r/w 48 ? 4bh cntb count b r/w 4c ? 4fh gpictl general purpose input control r/w 50 ? 52h devresd device resource d r/w 53h ? reserved ? 54 ? 57h devacta device activity a r/w 58 ? 5bh devactb device activity b r/w 5c ? 5fh devresa device resource a r/w 60 ? 63h devresb device resource b r/w 64 ? 67h devresc device resource c r/w 68 ? 6ah devrese device resource e r/w 6bh ? reserved ? 6c ? 6fh devresf device resource f r/w 70 ? 72h devresg device resource g r/w 73h ? reserved ? 74 ? 77h devresh device resource h r/w 78 ? 7bh devresi device resource i r/w
e 82371AB (piix4) 51 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 10 . pci configuration registers (function 3) address offset mnemonic register name access 7c ? 7fh devresj device resource j r/w 80h pmregmisc miscellaneous power management r/w 81 ? 8fh ? reserved ? 90 ? 93h smbba smbus base address r/w 94 ? d1h ? reserved ? d2h smbhstcfg smbus host configuration r/w d3h smbrev smbus revision id ro d4h smbslvc smbus slave command r/w d5h smbshdw1 smbus slave shadow port 1 r/w d6h smbshdw2 smbus slave shadow port 2 r/w d7 ? ffh ? reserved ? 3.4.1. io space registers table 11 . power management i/o registers offset from base address mnemonic register name access 00 ? 01h pmsts power management status r/w 02 ? 03h pmen power management resume enable r/w 04 ? 05h pmcntrl power management control r/w 06 ? 07h ? reserved ? 08h pmtmr power management timer r/w 09 ? 0bh ? reserved ? 0c ? 0dh gpsts general purpose status r/w 0e ? 0fh gpen general purpose enable r/w 10 ? 13h pcntrl processor control r/w 14h plvl2 processor level 2 r/w 15h plvl3 processor level 3 r/w 16 ? 17h ? reserved ? 18 ? 19h glbsts global status r/w 1a ? 1bh ? reserved ? 1ch ? 1fh devsts device status r/w 20 ? 21h glben global enable r/w 22 ? 27h ? reserved ? 28 ? 2bh glbctl global control r/w 2c ? 2fh devctl device control r/w
82371AB (piix4) e 52 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 11 . power management i/o registers offset from base address mnemonic register name access 30 ? 33h gpireg general purpose input ro 34 ? 37h gporeg general purpose output r/w notes: 1. the base address is programmable via the pmba register (40 ? 43h; function 3) table 12 . system management bus (smbus) i/o registers offset from base address mnemonic register name access 00h smbhststs smbus host status r/w 01h smbslvsts smbus slave status r/w 02h smbhstcnt smbus host count r/w 03h smbhstcmd smbus host command r/w 04h smbhstadd smbus host address r/w 05h smbhstdat0 smbus host data 0 r/w 06h smbhstdat1 smbus host data 1 r/w 07h smbblkdat smbus block data r/w 08h smbslvcnt smbus slave count r/w 09h smbshdwcmd smbus shadow command r/w 0a ? 0bh smbslvevt smbus slave event r/w 0c ? 0dh smbslvdat smbus slave data r/w notes: 1. the bas e address is programmable via the smbba register (90 ? 93h; function 3)
e 82371AB (piix4) 53 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4. 0. pci to isa/eio bridge register descriptions this section describes in detail the registers associated with the piix4 pci-to-isa bridge function. this includes isa/eio configuration, at compatible and pci-based dma control, standard at and serial interrupt logic, counter/timers, real time clock and other miscellaneous functionality. 4.1. pci to isa/eio bridge pci configuration space registers (pci function 0) 4.1.1. vid ? vendor identifi cation register (function 0) address offset: 00 ? 01h default value: 8086h attribute: read only the vid register contains the vendor identification number. this register, along with the device identification register, uniquely identifies any pci device. writes to this register have no effect. bit description 15:0 vendor identification number. this is a 16-bit value assigned to intel. 4.1.2. did ? device identifi cation register (function 0) address offset: 02 ? 03h default value: 7110h attribute: read only the did register contains the device identification number. this register, along with the vid register, define the piix4. writes to this register have no effect. bit description 15:0 device identification number . this is a 16-bit value assigned to the piix4.
82371AB (piix4) e 54 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.3. pcicmd ? pci command register (function 0) address offset: 04 ? 05h default value: 0007h attribute: read/write this 16-bit register provides basic control over the piix4?s ability to respond to pci cycles. bit description 15:10 reserved. read as 0. 9 fast back-to-back enable (not implemented). this bit is hardwired to 0. 8 serr# enable (serre). 1=enable. 0=disable. when enabled (and dlc register, bit 3=1), a delayed transaction time-out causes piix4 to assert the serr# signal. the pcists register reports the status of the serr# signal. 7 address and data stepping enable (not implemented). the piix4 does not support address and data stepping. this bit is hardwired to 0. 6 parity error detect enable (not implemented). piix4 does not support parity error detection. this bit is hardwired to 0. 5 vga palette snoop enable (not implemented). piix4 does not support vga palette snooping. this bit is hardwired to 0. 4 memory write and invalidate enable (not implemented). piix4 does not generate memory write and invalidate pci transactions. this bit is hardwired to 0. 3 special cycle enable (sce) . 1=enable, piix4 recognizes all pci shutdown special cycles. 0=disable, piix4 ignores all pci special cycles. 2 bus master enable (not implemented). piix4 does not support disabling its function 0 bus master capability. this bit is hardwired to 1. 1 memory access (not implemented). piix4 does not support disabling function 0 access to memory. this bit is hardwired to 1. 0 i/o space access enable (not implemented). piix4 does not support disabling its function 0 response to pci i/o cycles. this bit is hardwired to 1.
e 82371AB (piix4) 55 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.4. pcists ? pci device s tatus register (function 0) address offset: 06 ? 07h default value: 0280h attribute: read/write the pcists register reports the occurrence of a pci master-abort by piix4 or a pci target-abort when piix4 is a master. the register also indicates piix4 devsel# signal timing. bit description 15 detected parity error (not implemented). read as 0. 14 signaled serr# status (serrs) ? r/wc. when piix4 asserts the serr# signal, this bit is set to 1. software sets this bit to a 0 by writing a 1 to it. 13 master-abort status (mas) ? r/wc. when piix4, as a master (for function 0), generates a master- abort, mas is set to a 1. software sets mas to 0 by writing a 1 to this bit location. 12 received target-abort status (rta) ? r/wc. when piix4 is a master on the pci bus (for function 0) and receives a target-abort, this bit is set to a 1. software sets rta to 0 by writing a 1 to this bit location. 11 signaled target-abort status (sta) ? r/wc. this bit is set when piix4 isa bridge function is targeted with a transaction that piix4 terminates with a target abort. software sets sta to 0 by writing a 1 to this bit location. 10:9 devsel# timing status (devt) ? ro. piix4 always generates devsel# with medium timing for function 0 i/o cycles. thus, devt=01. this devsel# timing does not include configuration cycles. 8 perr# response (not implemented). piix4 does not detect or respond to parity errors. read as 0. 7 fast back to back ? ro. this bit indicates that piix4 as a target is capable of accepting fast back- to-back transactions. 6:0 reserved. read as 0s. 4.1.5. ri d ? revision identific ation register (function 0) address offset: 08h default value: initial stepping=00h. refer to piix4 specification updates latest value. attribute: read only this 8-bit register contains device stepping information. writes to this register have no effect. bit description 7:0 revision id byte. the register is hardwired to the default value.
82371AB (piix4) e 56 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.6. classc ? class code r egister (function 0) address offset: 09 - 0bh default value: 060100h attribute: read only this register identifies the base class code, sub-class code, and device programming interface for piix4 pci function 0. bit description 23:16 base class code (basec). 06h=bridge device. 15:8 sub-class code (scc) . 01h=pci-to-isa bridge. 80h=other bridge device (pci positive decode bridge). this value depends upon the programming of bit 1 of the general configuration register (pci function 0, address b0h). if programmed as a subtractive decode bridge (default), this will read 01h. if programmed as a positive decode bridge, this will read 80h. 7:0 programming interface (pi). 00h=no register level programming interface defined. 4.1.7. hedt ? header type re gister (function 0) address offset: 0eh default value: 80h attribute: read only the hedt register identifies piix4 as a multi-function device. bit description 7:0 device type (devicet). 80h=multi-function device. 4.1.8. iort ? isa i/o recove ry timer register (function 0) address offset: 4ch default value: 4dh attribute: read/write the i/o recovery mechanism in piix4 is used to add additional recovery delay between cpu or pci master originated 8-bit and 16-bit i/o cycles to the isa bus. piix4 automatically forces a minimum delay of 3.5 sysclks between back-to-back 8- and 16-bit i/o cycles to the isa bus. this delay is measured from the rising edge of the i/o command (ior# or iow#) to the falling edge of the next i/o command. if a delay of greater than 3.5 sysclks is required, the isa i/o recovery time register can be programmed to increase the delay in increments of sysclks. no additional delay is inserted for back-to-back i/o ? sub cycles ? generated as a result of byte assembly or disassembly. this register defaults to 8- and 16-bit recovery enabled with one sysclk clock added to the standard i/o recovery.
e 82371AB (piix4) 57 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 7 dma reserved page register aliasing control (dmaac). when dmaac=0, piix4 aliases pci i/o accesses in the 90 ? 9fh range to the 80 ? 8fh range. in this case, piix4 only forwards pci write accesses to 90 ? 9fh to the isa bus. isa master accesse s to 90 - 9fh range are forwarded to pci. when dmaac=1, piix4 disables aliasing for the entire 90 ? 9fh range (they are considered isa bus register locations). piix4 forwards read and write accesses to these registers to isa. isa master accesses to 90 - 9fh range are ignored by piix4. note, that port 92h is always a distinct register in the 90 ? 9fh range and is never forwarded from the pci bus to the isa bus. it is also never forwarded from isa to pci or from isa to the internal port 92 register. piix4 does not support aliasing of the 90h range for the distributed dma function, even if aliasing is enabled. 6 8-bit i/o recovery enable. 1=enable the recovery time programmed in bits [5:3]. 0=disable recovery times in bits [5:3] and use the recovery timing of 3.5 sysclks. 5:3 8-bit i/o recovery times. when bit 6=1, this 3-bit field defines the additional number of sysclks added to standard 3.5 sysclk recovery time for 8-bit i/o. bit[5:3] sysclk bit[5:3] sysclk 001 1 101 5 010 2 110 6 011 3 111 7 100 4 000 8 2 16-bit i/o recovery enable. 1=enable the recovery times programmed in bits [1:0]. 0=disable programmable recovery times in bits [1:0] and use the recovery timing of 3.5 sysclks. 1:0 16-bit i/o recovery times. when bit 2=1, this 2-bit defines the additional number of sysclks added to standard 3.5 sysclk recovery time for 16-bit i/o. bit[1:0] sysclk 00 3 01 1 10 2 11 4 4.1.9. xbcs ? x-bus chip sel ect register (function 0) address offset: 4e - 4fh default value: 03h attribute: read/write this register enables or disables accesses to an external rtc, keyboard controller, i/o apic, a secondary controller, and bios. disabling any of these bits prevents the device?s chip select and x-bus output enable control signal (xoe#) from being generated. this register also provides coprocessor error and mouse functions. bit description 15:11 reserved.
82371AB (piix4) e 58 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 10 micro controller address location enable. 1=enable mccs# and positive pci decode for address locations 62h and 66h. 0=disable mccs# and positive pci decode for accesses to these locations. 9 1-meg extended bios enable. when bit 9=1, pci master accesses to locations fff00000 ? fff7ffffh are forwarded to isa and result in the generation of bioscs# and xoe#. when forwarding the additional 512-kbyte region, piix4 allows the pci address a[23:20] to propagate to the isa la[23:20] lines as all 1?s, aliasing this 512-kbyte region to the top of the 16-mbyte space. to avoid contention, isa memory must not be present in this region (00f00000 ? 00f7ffffh). when bit 9=0, piix4 does not generate bioscs# or xoe# for accesses to this memory region. 8 apic chip select. when enabled (bit 8=1), apiccs# is asserted for pci memory accesses to the programmable i/o apic region. this cycle is forwarded to the isa bus. the default i/o apic addresses are memory fec0_0000h and fec0_0010h. these can be relocated via the apic base address relocation register. when disabled (bit 8=0), the pci cycle is ignored by piix4 and apiccs# and xoe# are not generated. note that apiccs# is not generated for isa-originated cycles. this bit is also used to select between gpio functionality and apic functionality on apicreq#, apicack#, apiccs#, irq0, irq8#, and irq9out# signals. when disabled, these signals become general purpose inputs or outputs. 7 extended bios enable. when bit 7=1 (enabled), pci master accesses to locations fff80000 ? fffdffffh are forwarded to isa and result in the generation of bioscs# and xoe#. when forwarding the additional 384-kbyte region at the top of 4 gbytes, piix4 allows the pci address a[23:20] to propagate to the isa la[23:20] lines as all 1?s, aliasing this 384-kbyte region to the top of the 16-mbyte space. to avoid contention, isa memory must not be present in this region (00f80000 ? 00fdffffh). when bit 7=0, piix4 does not generate bioscs# or xoe# for accesses to this memory region. 6 lower bios enable. when bit 6=1 (enabled), pci master, or isa master accesses to the lower 64- kbyte bios block (e0000 ? effffh) at the top of 1 mbyte, or the aliases at the top of 4 gbyte (fffe0000 ? fffe ffffh) result in the generation of bioscs# and xoe#. when forwarding the region at the top of 4 gbytes to the isa bus, the isa la[23:20] lines are all 1?s, aliasing this region to the top of the 16-mbyte space. to avoid contention, isa memory must not be present in this region (00fe0000 ? 00feffffh). when bit 6=0, piix4 does not generate bioscs# or xoe# during these accesses and does not forward the accesses to isa. 5 coprocessor error function enable. 1=enable; the ferr# input, when asserted, triggers irq13 (internal). ferr# is also used to gate the ignne# output. 0=disable. 4 irq12/m mouse function enable. 1=mouse function; 0=standard irq12 interrupt function. 3 port 61h alias enable. 1=piix4 aliases accesses to 63h, 65h, and 67h to 61h. 0=piix4 does not alias 63h, 65h, and 67h to 61h. 2 bioscs# write protect enable. 1=enable (bioscs# is asserted for bios memory read and write cycles in decoded bios region); 0=disable (bioscs# is only asserted for bios read cycles). 1 kbccs# enable. 1=enable kbcs# and xoe# for address locations 60h and 64h. 0=disable kbcs#/xoe# for accesses to these locations. 0 rtccs#/rtcale enable. 1=enable rtccs#/rtcale and xoe# for accesses to address locations 70 ? 77h. 0=disable rtccs#/rtcale and xoe# for these accesses.
e 82371AB (piix4) 59 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.10. pirqrc[a:d] ? pirqx r oute control registers (function 0) address offset : 60h (pirqrca#) ? 63h (pirqrcd#) default value: 80h attribute: r/w these registers control the routing of the pirq[a:d]# signals to the irq inputs of the interrupt controller. each pirqx# can be independently routed to any one of 11 interrupts. all four pirqx# lines can be routed to the same irqx input. note that the irq that is selected through bits [3:0] must be set to level sensitive mode in the corresponding elcr register. when a pirq signal is routed to an interrupt controller irq, piix4 masks the corresponding irq signal. bit description 7 interrupt routing enable. 0=enable; 1=disable. 6:4 reserved. read as 0s. 3:0 interrupt routing. when bit 7=0, this field selects the routing of the pirqx to one of the interrupt controller interrupt inputs. bits[3:0] irq routing bits[3:0] irq routing bits[3:0] irq routing 0000 reserved 0110 irq6 1011 irq11 0001 reserved 0111 irq7 1100 irq12 0010 reserved 1000 reserved 1101 reserved 0011 irq3 1001 irq9 1110 irq14 0100 irq4 1010 irq10 1111 irq15 0101 irq5 4.1.11. serirqc ? serial irq control register (function 0) address offset : 64h default value: 10h attribute: r/w this register controls the start frame pulse width generated on the serial interrupt signal (serirq). bit description 7 serial irq enable. 1=enable (bit 16 in register offset b0h ? b3h must also be 1). 0=disable. 6 serial irq mode select. 1=serial interrupts operate in continuous mode. 0=serial interrupts operate in quiet mode. 5:2 serial irq frame size. these bits select the frame size used by the serial irq logic. the default is 0100b indicating a frame size of 21 (17+4). these bits are readable and writeable, however the only programmed value supported by piix4 is 0100b. all other frame sizes are unsupported. 1:0 start frame pulse width. these bits define the start frame pulse width generated by the serial interrupt control logic. bits[1:0] pulse width (pci clocks) 00 4 clocks 01 6 clocks 10 8 clocks 11 reserved
82371AB (piix4) e 60 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.12. tom ? top of memory r egister (function 0) address offset: 69h default value: 02h attribute: read/write this register enables the forwarding of isa or dma memory cycles to the pci bus and sets the top of main memory accessible by isa or dma devices. in addition, this register controls the forwarding of isa or dma accesses to the lower bios region (e0000 ? effffh) and the 512 ? 640-kbyte main memory region (80000 ? 9ffffh). bit description 7:4 top of memory. the top of memory can be assigned in 1-mbyte increments from 1 ? 16 mbytes. isa or dma accesses within this region, and not in the memory hole region, are forwarded to pci. bits[7:4] top of memory bits[7:4] top of memory bits[7:4] top of memory 0000 1 mbyte 0110 7 mbyte 1011 12 mbyt e 0001 2 mbyte 0111 8 mbyte 1100 13 mbyte 0010 3 mbyte 1000 9 mbyte 1101 14 mbyte 0011 4 mbyte 1001 10 mbyte 1110 15 mbyte 0100 5 mbyte 1010 11 mbyte 1111 16 mbyte 0101 6 mbyte note that piix4 only supports a main memory hole at the top of 16 mbytes. thus, if a 1-mbyte memory hole is created for the host-to-pci bridge dram controller between 15 and 16 mbytes, piix4 top of memory should be set at 15 mbytes. 3 isa/dma lower bios forwarding enable. 1=enable (forwarded to pci, if xbcs register bit 6=0); 0=disable (contained to isa). note that if the xbcs register bit 6=1, isa/dma accesses in this region are always contained to isa. 2 640 ? 768-kbyte memory region (a0000 ? bffffh) enable. 1=enable (isa master and dma cycles forwarded to pci); 0=disable (contained to isa). 1 isa/dma 512 ? 640-kbyte region forwarding enable . 1=enable (isa master and dma cycles forwarded to pci); 0=disable (contained to isa). 0 reserved.
e 82371AB (piix4) 61 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.13. mstat ? miscellaneous status register (function 0) address offset: 6a ? 6bh default value: 0000h attribute: read/write this register provides miscellaneous status and control functions. bit description 15 serr# generation due to delayed transaction time-out ? r/wc. piix4 sets this bit to a 1 when it generates serr# due to a delayed transaction time-out caused by expiration of the pci delayed transaction discard timer. software sets this bit to a 0 by writing a 1 to it. 14:8 reserved. 7 host-to-pci bridge retry enable ? r/w. 1=enable. 0=disable. this bit, when enabled, causes piix4 to retry, without initiating a delayed transaction, cpu initiated, non-lock#, pci cycles. no delayed transactions to piix4 may currently be pending and passive release must be active. delayed transactions and passive release must both be enabled via the dlc register (function 0, offset 82h). when disabled, piix4 accepts these cycles as normal, which may include retry with initiation of a delayed transaction. 6:0 reserved. 4.1.14. mbdma[1:0] ? motherbo ard device dma control registers (function 0) address offset : 76h ? mbdma0#; 77h ? mbdma1# default value: 04h attribute: r/w these registers enable and disable a type f dma transfer (3 sysclk) for a particular dma channel. bit description 7 type f and dma buffer enable (fast). 1=enable for the channel selected by bits[2:0]. 0=disable for the channel selected by bits[2:0]. 6:4 reserved. 3 reserved. read as 1. 2:0 type f dma channel routing (chnl). when fast=1, this field enables type f transfers and the 4-byte dma buffer for an isa peripheral on the selected channel. bits[2:0] dma channel bits[2:0] dma channel 000 0 100 default (disabled) 001 1 101 5 010 2 110 6 011 3 111 7
82371AB (piix4) e 62 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.15. apicbase ? apic base address relocation register (function 0) address offset: 80h default value: 00h attribute: read/write this register provides the modifier for the apic base address. apic is mapped in the memory space at the locations fec0_xy00h and fec0_xy10h (x=0 ? fh, y=0,4,8,ch). the value of ?y? is defined by bits [1,0] and the value of ?x? is defined by bits [5:2]. thus, the relocation register provides 1-kbyte address granularity (i.e. potentially up to 64 i/o apics can be uniformly addresses in the memory space). the default value of 00h provides mapping of the i/o apic unit at the addresses fec0_0000h and fec0_0010h. bit description 7 reserved. 6 a12 mask. this bit determines selects whether apiccs# is generated for one or two i/o apic address ranges. when bit 6=1, address bit 12 is ignored allowing the apiccs# signal to be generated for two consecutive i/o apic address ranges. external logic is needed to select individual i/o apics by combining sa12 and apiccs#. for example, when bit 6=1 (and x and y=0), apiccs# is generated for addresses fec0_0000h, fec0_0010, as well as fec0_1000h, fec0_1010. when bit 6=0, apiccs# is generated for one i/o apic address range. 5:2 x-base address. bits[5:2] are compared with pci address bits ad[15:12], respectively. 1:0 y-base address. bits[1:0] are compared with pci address bits ad[11:10], respectively. 4.1.16. dlc ? deterministic l atency control register (function 0) address offset: 82h default value: 00h attribute: read/write this register enables and disables the delayed transaction and passive release functions. when enabled, these functions make piix4 pci revision 2.1 compliant. the 2.1 revision of the pci specification requires much tighter controls on target and master latency. targets must respond with trdy# or stop# within 16 clocks of frame#, and masters must assert irdy# within 8 pci clocks for any data phase. pci cycles to or from isa typically take longer than this. piix4 provides a programmable delayed completion mechanism described in the pci specification to meet the required target latencies. this includes a discard timer which times out if a pci master with an outstanding delayed transaction has not retried the transaction for greater than 2 15 pci clocks. isa bridges also support guaranteed access time (gat) mode, which will now violate the spirit of the pci specification. piix4 provides a programmable passive release mechanism to meet the required master latencies. when passive release is enabled in piix4, isa masters may see long delays in accesses to any pci memory, including the main dram array. the isa gat mode is not supported with passive release enabled. isa masters must honor iochrdy.
e 82371AB (piix4) 63 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 7:4 reserved. 3 serr# generation enable (due to delayed transaction time-out). 1=enable. 0=disable. 2 usb passive release enable (usbpr). 1=enable. 0=disable. when enabled, this allows piix4 to use passive release while transferring control information or data for usb transactions. when disabled, piix4 will perform pci accesses for usb without using passive release. 1 passive release enable. 1=enable the passive release mechanism encoded on the phold# signal when piix4 is a pci master. 0=disable passive release. 0 delayed transaction enable. 1=enable the delayed transaction mechanism when piix4 is the target of a pci transaction. 0=disable delayed transaction mechanism. 4.1.17. pdmacfg ? pci dma con figuration register (function 0) address offset: 90 ? 91h default value: 0000h attribute: read/write this register defines the type of dma performed by a particular dma channel. if a channel is programmed for distributed dma mode, piix4 does not respond to either the isa dreq signal or to the pc/pci encoding for that channel. bit description 15:14 dma ch 7 select. these bits define the type of dma performed on this channel. bits[15:14] dma type 00 normal isa dma (default ) 01 pc/pci dma 10 distributed dma 11 reserved 13:12 dma ch 6 select. this field define the type of dma performed on this channel. bits[13:12] dma type 00 normal isa dma (default) 01 pc/pci dma 10 distributed dma 11 reserved 11:10 dma ch 5 select. these bits define the type of dma performed on this channel. bits[11:10] dma type 00 normal isa dma (default) 01 pc/pci dma 10 distributed dma 11 reserved 9:8 reserved.
82371AB (piix4) e 64 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 7:6 dma ch 3 select. this field defines the type of dma performed on this channel. bits[7:6] dma type 00 normal isa dma (default) 01 pc/pci dma 10 distributed dma 11 reserved 5:4 dma ch 2 select. this field defines the type of dma performed on this channel. bits[5:4] dma type 00 normal isa dma (default) 01 pc/pci dma 10 distributed dma 11 reserved 3:2 dma ch 1 select. this field defines the type of dma performed on this channel. bits[3:2] dma type 00 normal isa dma (default) 01 pc/pci dma 10 distributed dma 11 reserved 1:0 dma ch 0 select. this field defines the type of dma performed on this channel. bits[1:0] dma type 00 normal isa dma (default) 01 pc/pci dma 10 distributed dma 11 reserved 4.1.18. ddmabp ? distributed dma slave base pointer registers (function 0) address offset: 92 ? 93h (ch0-3); 94 ? 95h (ch5-7) default value: 0000h attribute: read/write these registers provide the base address for distributed dma slave channel registers, one for each dma controller. bits 5:0 are reserved to provide access to a 64-byte io space (16 bytes per channel). the channels are accessed using offset from base address as follows (note that channel 4 is reserved and is not accessible). base offset channel 00 ? 0fh 0,4 10 ? 1fh 1,5 20 ? 2fh 2,6 30 ? 3fh 3,7 bit description 15:6 base pointer. io address pointer to dma slave channel registers. corresponds to pci address ad[15:6]. 5:0 reserved. read as 0.
e 82371AB (piix4) 65 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.1.19. gencfg ? general conf iguration register (function 0) address offset: b0 ? b3h default value: 0000h attribute: read/write this register provides general system configuration for piix4, including signal and gpio selects, isa/eio select, ide signal configuration, and ide signal enables. bit description 31 kbccs#/gpo26 signal pin select. 0=kbccs# signal (default). 1=gpo26. this bit selects the functionality multiplexed onto the kbccs# pin. 30 rtcale/gpo25 signal pin select. 0=rtcale signal (default). 1=gpo25. this bit selects the functionality multiplexed onto the rtcale pin. 29 rtccs#/gpo24 signal pin select. 0=rtccs# signal (default). 1=gpo2. this bit selects the functionality multiplexed onto the rtccs# pin. 28 xoe# and xdir#/gpo[22:23] signal pin select. 0=xoe# and xdir# signals (default). 1=gpo[23] and gpo[22], respectively. this bit selects the functionality multiplexed onto the xoe# and xdir# pins. 27 ring indicate (ri#)/gpi12 signal pin select. 0=ri# signal (default). 1=gpi12. this bit selects the functionality multiplexed onto the ri# pin. 26 reserved. 25 lid/gpi10 signal pin select. 0=lid signal (default). 1=gpi10. this bit selects the functionality multiplexed onto the lid pin. 24 batlow#/gpi9 signal pin select. 0=batlow# signal (default). 1=gpi9. this bit selects the functionality multiplexed onto the batlow# pin. 23 thrm#/gpi8 signal pin select. 0=thrm# signal (default). 1=gpi8. this bit selects the functionality multiplexed onto the thrm# pin. 22 sus_stat2#/gpo21 signal pin select. 0=sus_stat2# signal (default). 1=gpo21. this bit selects the functionality multiplexed onto the sus_stat2# pin. 21 sus_stat1#/gpo20 signal pin select. 0=sus_stat1# signal (default). 1=gpo20. this bit selects the functionality multiplexed onto the sus_stat1# pin. 20 zz/gpo19 signal pin select. 0=zz signal (default). 1=gpo19. this bit selects the functionality multiplexed onto the zz pin. 19 pci_stp#/gpo18 signal pin select. 0=pci_stp# signal (default). 1=gpo18. this bit selects the functionality multiplexed onto the pci_stp# pin. 18 cpu_stp#/gpo17 signal pin select. 0=cpu_stp# signal (default). 1=gpo17. this bit selects the functionality multiplexed onto the cpu_stp# pin. 17 susb# and susc#/gpo[15:16] signal pin select. 0=susb# and susc# signals (default). 1=gpo15 and gpo16 respectively. this bit selects the functionality multiplexed onto the susb# and susc# pins.
82371AB (piix4) e 66 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 16 serirq/gpi7 signal pin select. 0=gpi7 (default). 1=serirq signal. this bit selects the functionality multiplexed onto the serirq pin. 15 smbalert#/gpi11 signal pin select. 0=smbalert# signal (default). 1=gpi11. this bit selects the functionality multiplexed onto the smbalert# pin. 14 irq8#/gpi6 signal pin select. 0=gpi6 (default). 1=irq8# signal. this bit selects the functionality multiplexed onto the irq8# pin. 13 reserved. 12 secondary ide signal interface tri-state. 0=enable secondary ide signal pin interface (default). 1=tri-state (disable) secondary ide signal pin interface. this bit functions independently of bit 4. 11 primary ide signal interface tri-state. 0=enable primary ide signal pin interface (default). 1=tri- state (disable) primary ide signal pin interface. this bit functions independently of bit 4. 10 pc/pci req[c] and gnt[c]/gpi4 and gpo11 signal pin select. 0=gpi4 and gpo11 (default). 1=pc/pci reqc and gntc respectively. this bit selects the functionality multiplexed onto the reqc and gntc pins. 9 pc/pci req[b] and gntb/gpi3 and gpo10 signal pin select. 0=gpi3 and gpo10 (default). 1=pc/pci reqb and gntb respectively. this bit selects the functionality multiplexed onto the reqb and gntb pins. 8 pc/pci reqa and gnta/gpi2 and gpo9 signal pin select. 0=gpi2 and gpo9 (default). 1=pc/pci reqa and gnta respectively. this bit selects the functionality multiplexed onto the reqa and gnta pins. 7 reserved. 6 plug and play (pnp) address decode enable. 0=disable pnp address positive decode (default). 1=enable pnp address positive decode and forwarding to the isa bus. the pnp addresses which are decoded are 279h and a79h. if bit 1 is set for positive decode, this bit must be set for these address to be forwarded to isa. 5 alternate access mode enable. 0=disable alternate access mode (default). 1=enables alternate access mode to allow access to shadow registers as described in the power management functional description section. enabling this bit allows special access to various internal piix4 registers. see special access restrictions prior to setting this bit. 4 ide signal configuration. 0=primary and secondary interface enable (default). 1=primary 0 and primary 1 interface enable. this bit selects whether the ide interfaces are split for primary and secondary channels allowing access to 4 ide devices or are split into primary drive 0 and primary drive 1 channels allowing access to only the two primary ide devices. 3 config 2 status (ro). this bit provides indication of signal present on config2 pin. its meaning is currently undefined. the use of this pin is reserved and should be tied low through a pull down resistor. 2 config 1 status (ro). 0=pentium processor. 1=pentium ii processor. this bit provides indication of signal present on config1 pin. it is used to change the polarity of the init and cpurst signals to match the requirements of the microprocessors.
e 82371AB (piix4) 67 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 1 positive or subtractive decode configuration. 0=subtractive decode (default). 1=positive decode. this bit determines how piix4 decodes accesses on the pci bus for forwarding to isa. if set for positive decode, piix4 positively decodes (with medium decode timing) and forwards pci access to isa only for address ranges which are enabled within piix4. if set for subtractive decode, piix4 positively decodes and forwards those cycles whose addresses are enabled within piix4. it subtractively decodes and forwards all other cycles not positively decoded by another device on the pci bus. the setting and functionality of this bit is independent of bit 0, isa or eio select. 0 isa or eio select. 0=eio (default). 1=isa. this bit determines whether the expansion bus on piix4 supports the full industry standard architecture (isa) bus or whether it supports the extended i/o (eio) bus. see the isa/eio interface section for details concerning isa and eio interface differences. this bit also selects the functionality multiplexed onto the iochk# and la[17:23] pins. 0=gpi0 and gpo[1:7] (default). 1=iochk# and la[17:23] respectively. these are the signals which are not used in eio mode. 4.1.20. rtccfg ? real time cl ock configuration register (function 0) address offset: cbh default value: 21h attribute: read/write this register is used to configure the internal real time clock. bit description 7:6 reserved. 5 rtc positive decode enable. 0=piix4 subtractively decodes for rtc i/o registers. 1=piix4 positively decodes for rtc i/o registers (default). the pci cycles with addresses 70 ? 73h are either positively or subtractively decoded based on this bit. the cycles are then routed to the internal rtc controller or forwarded to isa based on bits 2 (extended bank) and bit 0 (standard bank) below. this bit should be set to 0 if piix4?s internal rtc is not used and the external rtc is on the pci bus, or if subtractive decode is desired for an external rtc on the isa or x-bus. 4 lock upper ram bytes. 0=upper ram data bytes 38h ? 3fh in the extended bank are readable and writeable (default). 1=upper ram data bytes 38h ? 3fh in the extended bank are neither readable nor writeable. this is used to lock bytes 38h ? 3fh in the upper 128-byte bank of ram. write cycles will have no effect and read cycles will not return a guaranteed value. warning: this is a write-once register that can only be reset by a hardware reset. no software means is possible to reset this bit. 3 lock lower ram bytes. 0=lower ram data bytes 38h ? 3fh in the standard bank are readable and writeable (default). 1=lower ram data bytes 38h ? 3fh in the standard bank are neither readable nor writeable. this is used to lock bytes 38h ? 3fh in the lower 128-byte bank of ram. write cycles will have no effect and read cycles will not return a guaranteed value. warning: this is a write-once register that can only be reset by a hardware reset. no software means is possible to reset this bit.
82371AB (piix4) e 68 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 2 upper ram enable. 0=accesses to rtc upper 128-byte extended bank at i/o address 72 ? 73h is disabled. accesses will be forwarded to isa bus as determined by bit 5 of this register (default). 1=accesses to 72 ? 73h are forwarded to rtc upper 128-byte extended bank. 1 reserved. 0 rtc enable. 0=accesses to rtc lower 128-byte standard bank at i/o address 70 ? 71h is disabled. accesses will be forwarded to isa bus as determined by bit 5 of this register. 1=accesses to 70 ? 71h are forwarded to rtc lower 128-byte standard bank. when this bit is reset, the upper bank of ram may still be accessed (enabled via bit 2 in this register). 4.2. pci to isa/eio bridge io space registers (io) 4.2.1. dma registers piix4 contains dma circuitry that incorporates the functionality of two 82c37 dma controllers (dma1 and dma2). the dma registers control the operation of the dma controllers and are all accessible from the host cpu via the pci bus interface. in addition, some of the registers are accessed from the isa bus via isa i/o space. unless otherwise stated, a cpurst sets each register to its default value. 4.2.1.1. dcom ? dma command register (io) i/o address: channels 0 ? 3 ? 08h; channels 4 ? 7 ? 0d0h default value: 00h (cpurst or master clear) attribute: write only this 8-bit register controls the configuration of the dma. note that disabling channels 4 ? 7 also disables channels 0 ? 3, since channels 0 ? 3 are cascaded onto channel 4. bit description 7 dack# active level (dack#[3:0, (7:5)]). 1=active high; 0=active low. 6 dreq sense assert level (dreq[3:0, (7:5)]). 1=active low; 0=active high. 5 reserved. must be 0. 4 dma group arbitration priority. 1=rotating priority; 0=fixed priority. 3 reserved . must be 0. 2 dma channel group enable. 1=disable; 0=enable. 1:0 reserved . must be 0.
e 82371AB (piix4) 69 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.1.2. dcm ? dma channel mode register (io) i/o address: channels 0 ? 3 ? 0bh; channels 4 ? 7 ? 0d6h default value: bits[7:2]=0; bits[1:0]=undefined (cpurst or master clear) attribute: write only each channel has a 6-bit dma channel mode register. the channel mode registers provide control over dma transfer type, transfer mode, address increment/decrement, and autoinitialization. bit description 7:6 dma transfer mode. each dma channel can be programmed in one of four different modes: bits[7:6] transfer mode 00 demand mode 01 single mode 10 block mode 11 cascade mode 5 address increment/decrement select. 0=increment; 1=decrement. 4 autoinitialize enable. 1=enable; 0=disable. 3:2 dma transfer type. when bits [7:6]=11, the transfer type bits are irrelevant. bits[3:2] transfer type 00 verify transfer 01 write transfer 10 read transfer 11 illegal 1:0 dma channel select. bits [1:0] select the dma channel mode register written to by bits [7:2]. bits[1:0] channel 00 channel 0 (4) 01 channel 1 (5) 10 channel 2 (6) 11 channel 3 (7)
82371AB (piix4) e 70 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.1.3. dr ? dma request register (io) i/o address: channels 0 ? 3 ? 09h; channels 4 ? 7 ? 0d2h default value: bits[1:0]=undefined; bits[7:2]=0 (cpurst or master clear) attribute: write only the request register is used by software to initiate a dma request. the dma responds to the software request as though dreqx is asserted. these requests are non-maskable and subject to prioritization by the priority encoder network. for a software request, the channel must be in block mode. the request register status for dma1 and dma2 is output on bits [7:4] of a status register read. bit description 7:3 reserved . must be 0. 2 dma channel service request. 0=resets the individual software dma channel request bit. 1=sets the request bit. generation of a tc also sets this bit to 0. 1:0 dma channel select. bits [1:0] select the dma channel mode register to program with bit 2. bits[1:0] channel 00 channel 0 01 channel 1 (5) 10 channel 2 (6) 11 channel 3 (7) 4.2.1.4. wsmb ? write single mask bit (io) i/o address: channels 0 ? 3 ? 0ah; channels 4 ? 7 ? 0d4h default value: bits[1:0]=undefined; bit 2=1; bits[7:3]=0 (cpurst or a master clear) attribute: write only a channel?s mask bit is automatically set when the current byte/word count register reaches terminal count (unless the channel is programmed for autoinitialization). setting the entire register disables all dma requests until a clear mask register instruction allows them to occur. this instruction format is similar to the format used with the dma request register. masking dma channel 4 (dma controller 2, channel 0) also masks dma channels [3:0]. bit description 7:3 reserved . must be 0. 2 channel mask select. 1=disable dreq for the selected channel. 0=enable dreq for the selected channel. 1:0 dma channel select. bits [1:0] select the dma channel mode register for bit 2. bits[1:0] channel 00 channel 0 (4) 01 channel 1 (5) 10 channel 2 (6) 11 channel 3 (7)
e 82371AB (piix4) 71 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.1.5. rwamb ? read/write all mask bits (io) i/o address: channels 0 ? 3 ? 0fh; channels 4 ? 7 ? 0deh default value: bit[3:0]=1; bit[7:4]=0 (cpurst or master clear) attribute: read/write a channel?s mask bit is automatically set to 1 when the current byte/word count register reaches terminal count (unless the channel is programmed for autoinitialization). setting bits [3:0] to 1 disables all dma requests until a clear mask register instruction enables the requests. note that, masking dma channel 4 (dma controller 2, channel 0), masks dma channels [3:0]. also note that, masking dma controller 2 with a write to port 0deh also masks dreq assertions from dma controller 1. bit description 7:4 reserved . must be 0. 3:0 channel mask bits. 1=disable the corresponding dreq(s); 0=enable the corresponding dreq(s). bit channel 0 0 (4) 1 1 (5) 2 2 (6) 3 3 (7) 4.2.1.6. ds ? dma status register (io) i/o address: channels 0 ? 3 ? 08h; channels 4 ? 7 ? 0d0h default value: 00h attribute: read only each dma controller has a read-only dma status register that indicates which channels have reached terminal count and which channels have a pending dma request. bit description 7:4 channel request status. when a valid dma request is pending for a channel (on its dreq signal line), the corresponding bit is set to 1. when a dma request is not pending for a particular channel, the corresponding bit is set to 0. the source of the dreq may be hardware or a software request. note that channel 4 does not have dreq or dack lines, so the response for a read of dma2 status for channel 4 is irrelevant. bit channel 4 0 5 1 (5) 6 2 (6) 7 3 (7) 3:0 channel terminal count status. 1=tc is reached; 0=tc is not reached. bit channel 0 0 1 1 (5) 2 2 (6) 3 3 (7)
82371AB (piix4) e 72 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.1.7. dbaddr ? dma base and current address registers (io) i/o address: dma channel 0 ? 000h dma channel 4 ? 0c0h dma channel 1 ? 002h dma channel 5 ? 0c4h dma channel 2 ? 004h dma channel 6 ? 0c8h dma channel 3 ? 006h dma channel 7 ? 0cch default value: undefined (cpurst or master clear) attribute: read/write this register works in conjunction with the low page register. after an autoinitialization, this register retains the original programmed value. autoinitialize takes place after a tc. the address register is automatically incremented or decremented after each transfer. this register is read/written in successive 8-bit bytes. the programmer must issue the ? clear byte pointer flip-flop ? command to reset the internal byte pointer and correctly align the write prior to programming the current address register. autoinitialize takes place only after a tc. bit description 15:0 base and current address [15:0]. these bits represent address bits [15:0] used when forming the 24-bit address for dma transfers. 4.2.1.8. dbcnt ? dma base and current count registers (io) i/o address: dma channel 0 ? 001h dma channel 4 ? 0c2h dma channel 1 ? 003h dma channel 5 ? 0c6h dma channel 2 ? 005h dma channel 6 ? 0cah dma channel 3 ? 007h dma channel 7 ? 0ceh default value: undefined (cpurst or master clear) attribute: read/write this register determines the number of transfers to be performed. the actual number of transfers is one more than the number programmed in the current byte/word count register when the value in the register is decremented from zero to ffffh, a tc is generated. autoinitialize can only occur when a tc occurs. if it is not autoinitialized, this register has a count of ffffh after tc. for transfers to/from an 8-bit i/o, the byte/word count indicates the number of bytes to be transferred. this applies to dma channels 0 ? 3. for transfers to/from a 16-bit i/o, with shifted address, the byte/word count indicates the number of 16-bit words to be transferred. this applies to dma channels 5 ? 7. bit description 15:0 base and current byte/word count. these bits represent the 16-byte/word count bits used when counting down a dma transfer.
e 82371AB (piix4) 73 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.1.9. dlpage ? dma low page registers (io) i/o address: dma channel 0 ? 087h dma channel 5 ? 08bh dma channel 1 ? 083h dma channel 6 ? 089h dma channel 2 ? 081h dma channel 7 ? 08ah dma channel 3 ? 082h default value: undefined (cpurst or master clear) attribute: read/write this register works in conjunction with the current address register. after an autoinitialization, this register retains the original programmed value. autoinitialize takes place after a tc. bit description 7:0 dma low page [23:16]. these bits represent address bits [23:16] of the 24-bit dma address. 4.2.1.10. dcbp ? dma clear byte pointer register (io) i/o address: channels 0 ? 3 ? 00ch; channels 4 ? 7 ? 0d8h default value: all bits undefined attribute: write only writing to this register executes the clear byte pointer command. this command is executed prior to reading/writing a new address or word count to the dma. the command initializes the byte pointer flip-flop to a known state so that subsequent accesses to register contents address upper and lower bytes in the correct sequence. the clear byte pointer command (or cpurst or the master clear command) clears the internal latch used to address the upper or lower byte of the 16-bit address and word count registers. bit description 7:0 clear byte pointer. no specific pattern. command enabled with a write to the i/o port address. 4.2.1.11. dmc ? dma master clear register (io) i/o address: channel 0 ? 3 ? 00dh; channel 4 ? 7 ? 0dah default value: all bits undefined attribute: write only this software instruction has the same effect as the hardware reset. bit description 7:0 master clear. no specific pattern. command enabled with a write to the i/o port address.
82371AB (piix4) e 74 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.1.12. dclm ? dma clear mask register (io) i/o address: channel 0 ? 3 ? 00eh; channel 4 ? 7 ? 0dch default value: all bits undefined attribute: write only this command clears the mask bits of all four channels, enabling them to accept dma requests. bit description 7:0 clear mask register. no specific pattern. command enabled with a write to the i/o port address. 4.2.2. interrupt controlle r registers piix4 contains an isa-compatible interrupt controller that incorporates the functionality of two 82c59 interrupt controllers. the interrupt registers control the operation of the interrupt controller. 4.2.2.1. icw1 ? initialization command word 1 register (io) i/o address: int cntrl-1 ? 020h; int cntrl-2 ? 0a0h default value: all bits undefined attribute: write only a write to initialization command word 1 starts the interrupt controller initialization sequence. addresses 020h and 0a0h are referred to as the base addresses of cntrl-1 and cntrl-2, respectively. an i/o write to the cntrl-1 or cntrl-2 base address with bit 4 equal to 1 is interpreted as icw1. for piix4-based isa systems, three i/o writes to ? base address + 1 ? must follow the icw1. the first write to ? base address + 1 ? performs icw2, the second write performs icw3, and the third write performs icw4. icw1 starts the initialization sequence during which the following automatically occur: 1. the interrupt mask register is cleared. 2. irq7 input is assigned priority 7. 3. the slave mode address is set to 7. 4. special mask mode is cleared and status read is set to irr. 5. if ic4 was set to 0, then all functions selected by icw4 are set to 0. however, icw4 must be programmed in the piix4 implementation of this interrupt controller, and ic4 must be set to a 1.
e 82371AB (piix4) 75 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 7:5 icw/ocw select. these bits should be 000 when programming piix4. 4 icw/ocw select. bit 4 must be a 1 to select icw1. after the fixed initialization sequence to icw1, icw2, icw3, and icw4, the controller base address is used to write to ocw2 and ocw3. bit 4 is a 0 on writes to these registers. a 1 on this bit at any time will force the interrupt controller to interpret the write as an icw1. the controller will then expect to see icw2, icw3, and icw4. 3 edge/level bank select (ltim). this bit is disabled. its function is replaced by the edge/level triggered control (elcr) registers. 2 adi. ignored for piix4. 1 single or cascade (sngl). this bit must be programmed to a 0. 0 icw4 write required (ic4). this bit must be set to a 1. 4.2.2.2. icw2 ? initialization command word 2 register (io) i/o address: int cntrl-1 ? 021h; int cntrl-2 ? 0a1h default value: all bits undefined attribute: write only icw2 is used to initialize the interrupt controller with the five most significant bits of the interrupt vector address. bit description 7:3 interrupt vector base address. bits [7:3] define the base address in the interrupt vector table for the interrupt routines associated with each interrupt request level input. 2:0 interrupt request level. must be programmed to all 0s. 4.2.2.3. icw3 ? initialization command word 3 register (io) i/o address: int cntrl-1 ? 021h default value: all bits undefined attribute: write only the meaning of icw3 differs between cntrl-1 and cntrl-2. on cntrl-1, the master controller, icw3 indicates which cntrl-1 irq line physically connects the intr output of cntrl-2 to cntrl-1. bit description 7:3 reserved. must be programmed to all 0s. 2 cascaded mode enable. this bit must be programmed to 1 selecting cascade mode. 1:0 reserved. must be programmed to all 0s.
82371AB (piix4) e 76 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.2.4. icw3 ? initialization command word 3 register (io) i/o address: int cntrl-2 ? 0a1h default value: all bits undefined attribute: write only on cntrl-2 (the slave controller), icw3 is the slave identification code broadcast by cntrl-1. bit description 7:3 reserved. must be programmed to all 0s. 2:0 slave identification code. must be programmed to 010b. 4.2.2.5. icw4 ? initialization command word 4 register (io) i/o address: int cntrl-1 ? 021h; int cntrl-2 ? 0a1h default value: 01h attribute: write only both piix4 interrupt controllers must have icw4 programmed as part of their initialization sequence. bit description 7:5 reserved. must be programmed to all 0s. 4 special fully nested mode (sfnm). bit 4, sfnm, should normally be disabled by writing a 0 to this bit. if sfnm=1, the special fully nested mode is programmed. 3 buffered mode (buf). must be programmed to 0 selecting non-buffered mode. 2 master/slave in buffered mode. should always be programmed to 0. bit not used. 1 aeoi (automatic end of interrupt). this bit should normally be programmed to 0. this is the normal end of interrupt. if this bit is 1, the automatic end of interrupt mode is programmed. 0 microprocessor mode. must be programmed to 1 indicating an intel architecture-based system.
e 82371AB (piix4) 77 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.2.6. ocw1 ? operational control word 1 register (io) i/o address: int cntrl-1 ? 021h; int cntrl-2 ? 0a1h default value: 00h attribute: read/write ocw1 sets and clears the mask bits in the interrupt mask register (imr). each interrupt request line may be selectively masked or unmasked any time after initialization. the imr stores the interrupt line mask bits. the imr operates on the irr. masking of a higher priority input does not affect the interrupt request lines of lower priority. unlike status reads of the isr and irr, for reading the imr, no ocw3 is needed. the output data bus contains the imr when an i/o read is active and the i/o address is 021h or 0a1h (ocw1). all writes to ocw1 must occur following the icw1-icw4 initialization sequence, since the same i/o ports are used for ocw1, icw2, icw3 and icw4. bit description 7:0 interrupt request mask (mask [7:0]) . when a 1 is written to any bit in this register, the corresponding irqx line is masked. for example, if bit 4 is set to a 1, then irq4 is masked. interrupt requests on irq4 do not set channel 4?s interrupt request register (irr) bit as long as the channel is masked. when a 0 is written to any bit in this register, the corresponding irqx is unmasked. note that masking irq2 on cntrl-1 also masks the interrupt requests from cntrl- 2, which is physically cascaded to irq2. 4.2.2.7. ocw2 ? operational control word 2 register (io) i/o address: int cntrl-1 ? 020h; int cntrl-2 ? 0a0h default value: bit[4:0]=undefined; bit[7:5]=0 01 attribute: write only ocw2 controls both the rotate mode and the end of interrupt mode. following a cpurst or icw initialization, the controller enters the fully nested mode of operation. both rotation mode and specific eoi mode are disabled following initialization. bit description 7:5 rotate and eoi codes. (r, sl, eoi). these three bits control the rotate and end of interrupt modes and combinations of the two. a chart of these combinations is listed above under the bit definition. bits[7:5] function bits[7:5] function 001 non-specific eoi cmd 000 rotate in auto eoi mode (clear) 011 specific eoi cmd 111 *rotate on specific eoi cmd 101 rotate on non-spec eoi cmd 110 *set priority cmd 100 rotate in auto eoi mode (set) 010 no operation * l0-l2 are used 4:3 ocw2 select. must be programmed to 00 selecting ocw2.
82371AB (piix4) e 78 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 2:0 interrupt level select (l2, l1, l0). l2, l1, and l0 determine the interrupt level acted upon when the sl bit is active (bit 6). when the sl bit is inactive, bits [2:0] do not have a defined function; programming l2, l1 and l0 to 0 is sufficient in this case. bit[2:0] interrupt level bit[2:0] interrupt level 000 irq 0(8) 100 irq 4(12) 001 irq 1(9) 101 irq 5(13) 010 irq 2(10) 110 irq 6(14) 011 irq 3(11) 111 irq 7(15) 4.2.2.8. ocw3 ? operational control word 3 register (io) i/o address: int cntrl-1 ? 020h; int cntrl-2 ? 0a0h default value: bit[6,0]=0; bit[7,4:2]=undefined; bit[5,1]=1 attribute: read/write ocw3 serves three important functions ? enable special mask mode, poll mode control, and irr/isr register read control. bit description 7 reserved . must be 0. 6 special mask mode (smm). if esmm=1 and smm=1, the interrupt controller enters special mask mode. if esmm=1 and smm=0, the interrupt controller is in normal mask mode. when esmm=0, smm has no effect. 5 enable special mask mode (esmm). 1=enable smm bit; 0=disable smm bit. 4:3 ocw3 select. must be programmed to 01 selecting ocw3. 2 poll mode command. 0=disable poll mode command. when bit 2=1, the next i/o read to the interrupt controller is treated as an interrupt acknowledge cycle indicating highest priority request. 1:0 register read command. bits [1:0] provide control for reading the in-service register (isr) and the interrupt request register (irr). when bit 1=0, bit 0 does not affect the register read selection. when bit 1=1, bit 0 selects the register status returned following an ocw3 read. if bit 0=0, the irr will be read. if bit 0=1, the isr will be read. following icw initialization, the default ocw3 port address read will be ? read irr. ? to retain the current selection (read isr or read irr), always write a 0 to bit 1 when programming this register. the selected register can be read repeatedly without reprogramming ocw3. to select a new status register, ocw3 must be reprogrammed prior to attempting the read. bit[1:0] function 00 no action 01 no action 10 read irq register 11 read is register
e 82371AB (piix4) 79 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.2.9. elcr1 ? edge/level control register (io) i/o address: int cntrl-1 ? 4d0h default value: 00h attribute: rea d/write elcr1 register allows irq[3:7] to be edge or level programmable on an interrupt by interrupt basis. irq0, irq1 and irq2 are not programmable and are always edge sensitive. when level triggered, the interrupt is signaled active when input irq signal is high. bit description 7 irq7 ecl. 0=edge triggered mode; 1=level triggered mode. 6 irq6 ecl. 0=edge triggered mode; 1=level triggered mode. 5 irq5 ecl. 0=edge triggered mode; 1=level triggered mode. 4 irq4 ecl. 0=edge triggered mode; 1=level triggered mode. 3 irq3 ecl. 0=edge triggered mode; 1=level triggered mode. 2:0 reserved. must be 0. 4.2.2.10. elcr2 ? edge/level control register (io) i/o address: int cntrl-2 ? 4d1h default value: 00h attribute: read/write elcr2 register allows irq[15,14,12:9] to be edge or level programmable on an interrupt by interrupt basis. note that, irq[13,8#] are not programmable and are always edge sensitive. when level triggered, the interrupt is signaled active when input irq signal is high. bit description 7 irq15 ecl. 0=edge triggered mode; 1=level triggered mode. 6 irq14 ecl. 0=edge triggered mode; 1=level triggered mode. 5 reserved. must be 0. 4 irq12 ecl. 0=edge triggered mode; 1=level triggered mode. 3 irq11 ecl. 0=edge triggered mode; 1=level triggered mode. 2 irq10 ecl. 0=edge triggered mode; 1=level triggered mode. 1 irq9 ecl. 0=edge triggered mode; 1=level triggered mode. 0 reserved. must be 0.
82371AB (piix4) e 80 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.3. counter/timer regis ters 4.2.3.1. tcw ? timer control word register (io) i/o address: 043h default value: all bits undefined attribute: write only the timer control word register specifies the counter selection, the operating mode, the counter byte programming order and size of the count value, and whether the counter counts down in a 16 bit or binary-coded decimal (bcd) format. after writing the control word, a new count can be written at any time. the new value takes effect according to the programmed mode. bit description 7:6 counter select. the read back command is selected when bits[7:6] are both 1. bit[7:6] function 00 counter 0 select 01 counter 1 select 10 counter 2 select 11 read back command 5:4 read/write select. the counter latch command is selected when bits[5:4] are both 0. bit[5:4] function 00 counter latch command 01 r/w least significant byte 10 r/w most significant byte 11 r/w lsb then msb 3:1 counter mode selection. bits [3:1] select one of six possible counter modes. bit[3:1] mode function 000 0 out signal on end of count (=0) 001 1 hardware r etriggerable one-shot x10 2 rate generator (divide by n counter) x11 3 square wave output 100 4 software triggered strobe 101 5 hardware triggered strobe 0 binary/bcd countdown select. 0=binary countdown. the largest possible binary count is 2 16 . 1=binary coded decimal (bcd) count is used. the largest bcd count allowed is 10 4 . read back command the read back command is used to determine the count value, programmed mode, and current states of the out pin and null count flag of the selected counter or counters. the read back command is written to the timer control word register which latches the current states of the above mentioned variables. the value of the counter and its status may then be read by i/o access to the counter address. note that the timer counter register bit definitions are different during the read back command than for a normal timer counter register write.
e 82371AB (piix4) 81 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 7:6 read back command. when bits[7:6]=11, the read back command is selected during a write to the timer control word register. following the read back command, i/o reads from the selected counter?s i/o addresses produce the current latch status, the current latched count, or both if bits 4 and 5 are both 0. 5 latch count of selected counters. when bit 5=0, the current count value of the selected counters will be latched. when bit 5=1, the count will not be latched. 4 latch status of selected counters. when bit 4=0, the status of the selected counters will be latched. when bit 4=1, the status will not be latched. the status byte format is described in section 4.3.3, interval timer status byte format register. 3 counter 2 select. when bit 3=1, counter 2 is selected for the latch command selected with bits 4 and 5. when bit 3=0, status and/or count will not be latched. 2 counter 1 select. when bit 2=1, counter 1 is selected for the latch command selected with bits 4 and 5. when bit 2=0, status and/or count will not be latched. 1 counter 0 select. when bit 1=1, counter 0 is selected for the latch command selected with bits 4 and 5. when bit 1=0, status and/or count will not be latched. 0 reserved . must be 0. counter latch command the counter latch command latches the current count value at the time the command is received. if a counter is latched once and then, some time later, latched again before the count is read, the second counter latch command is ignored. the count read will be the count at the time the first counter latch command was issued. if the counter is programmed for two byte counts, two bytes must be read. the two bytes do not have to be read successively (read, write, or programming operations for other counters may be inserted between the reads). note that the timer counter register bit definitions are different during the counter latch command than for a normal timer counter register write. note that, if a counter is programmed to read/write two-byte counts, a program must not transfer control between reading the first and second byte to another routine that also reads from that same counter. otherwise, an incorrect count will be read. bit description 7:6 counter selection. bits 6 and 7 are used to select the counter for latching. bit[7:6] function 00 latch counter 0 select 01 latch counter 1 select 10 latch counter 2 select 11 read back command select 5:4 counter latch command. when bits[5:4]=00, the counter latch command is selected during a write to the timer control word register. following the counter latch command, i/o reads from the selected counter?s i/o addresses produce the current latched count. 3:0 reserved . must be 0.
82371AB (piix4) e 82 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.3.2. tmrsts ? timer status registers (io) i/o address: counter 0 ? 040h; counter 1 ? 041h; counter 2 ? 042h default value: bits[6:0]=x; bit 7=0 attribute: read only each counter?s status byte can be read following an interval timer read back command. if latch status is chosen (bit 4=0, read back command) as a read back option for a given counter, the next read from the counter?s counter access ports register returns the status byte. bit description 7 counter out pin state. 1=pin is 1; 0=pin is 0. 6 count register status. this bit indicates when the last count written to the count register (cr) has been loaded into the counting element (ce). 0=count has been transferred from cr to ce and is available for reading. 1=count has not been transferred from cr to ce and is not yet available for reading. 5:4 read/write selection status. bits[5:4] reflect the read/write selection made through bits[5:4] of the control register. bit[5:4] function 00 counter la tch command 01 r/w least significant byte (lsb) 10 r/w most significant byte (msb) 11 r/w lsb then msb 3:1 mode selection status. bits[3:1] return the counter mode programming. bit[3:1] mode selected bit[3:1] mode selected 000 0 x11 3 001 1 100 4 x10 2 101 5 0 countdown type status. 0=binary countdown; 1=binary coded decimal (bcd) countdown. 4.2.3.3. tmrcnt ? timer count registers (io) i/o address: counter 0 ? 040h; counter 1 ? 041h; counter 2 ? 042h default value: all bits undefined attribute: read/write each of these i/o ports is used for writing count values to the count registers; reading the current count value from the counter by either an i/o read, after a counter-latch command, or after a read-back command; and reading the status byte following a read back command. bit description 7:0 counter port bit[x] . each counter i/o port address is used to program the 16-bit count register. the order of programming, either lsb only, msb only, or lsb then msb, is defined with the interval counter control register. the counter i/o port is also used to read the current count from the count register and return counter programming status following a read back command.
e 82371AB (piix4) 83 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.4. nmi registers the nmi logic incorporates two different 8-bit registers. the cpu reads the nmisc register to determine the nmi source (bits set to a 1). after the nmi interrupt routine processes the interrupt, software clears the nmi status bits by setting the corresponding enable/disable bit to a 1. the nmi enable and real-time clock register can mask the nmi signal and disable/enable all nmi sources. to ensure that all nmi requests are serviced, the nmi service routine software flow should be as follows: 1. nmi is detected by the processor on the rising edge of the nmi input. 2. the processor will read the status stored in port 061h to determine what sources caused the nmi. the processor may then set to 0 the register bits controlling the sources that it has determined to be active. between the time the processor reads the nmi sources and sets them to a 0, an nmi may have been generated by another source. the level of nmi will then remain active. this new nmi source will not be recognized by the processor because there was no edge on nmi. 3. the processor must then disable all nmis by setting bit 7 of port 070h to a 1 and then enable all nmis by setting bit 7 of port 070h to a 0. this will cause the nmi output to transition low then high if there are any pending nmi sources. the cpu?s nmi input logic will then register a new nmi. 4.2.4.1. nmisc ? nmi status and control register (io) i/o address: 061h default value: 00h attribute: read/write this register reports the status of different system components, controls the output of the speaker counter (counter 2), and gates the counter output that drives the spkr signal. bit description 7 serr# nmi source status ? ro. bit 7 is set if a system board agent (pci devices or main memory) detects a system board error and pulses the pci serr# line. this interrupt source is enabled by setting bit 2 to 0. to reset the interrupt, set bit 2 to 0 and then set it to 1. when writing to port 061h, bit 7 must be 0. 6 iochk# nmi source status ? ro. bit 6 is set if an expansion board asserts iochk# on the isa bus. this interrupt source is enabled by setting bit 3 to 0. to reset the interrupt, set bit 3 to 0 and then set it to 1. when writing to port 061h, bit 6 must be a 0. 5 timer counter 2 out status ? ro. the counter 2 out signal state is reflected in bit 5. the value on this bit following a read is the current state of the counter 2 out signal. counter 2 must be programmed following a cpurst for this bit to have a determinate value. when writing to port 061h, bit 5 must be a 0. 4 refresh cycle toggle ? ro. the refresh cycle toggle signal toggles from either 0 to 1 or 1 to 0 following every refresh cycle. when writing to port 061h, bit 4 must be a 0. 3 iochk# nmi enable ? r/w. 1=clear and disable; 0=enable iochk# nmis. 2 pci serr# enable ? r/w. 1=clear and disable; 0=enable. for piix4, the serr# signal can be for a special protocol between the host-to-pci bridge and piix4 (see mstat register description, 6b - 6ah, function 0). 1 speaker data enable ? r/w. 0=spkr output is 0; 1=the spkr output is the counter 2 out signal value. 0 timer counter 2 enable ? r/w. 0=disable; 1=enable.
82371AB (piix4) e 84 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.4.2. nmien ? nmi enable register (shared with real-time clock index register) (io) i/o address: 070h default value: bit[6:0]=undefined; bit 7=1 attribute: write only this port is shared with the real-time clock. do not modify the contents of this register without considering the effects on the state of the other bits. reads and writes to this register address flow through to the isa bus. reads to register 70h will cause x-bus reads, but no rtccs# or rtcale will be generated. (the rtc has traditionally been write-only to port 70h.) bit description 7 nmi enable. 1=disable generation of nmi; 0=enable generation of nmi. 6:0 real time clock address. used by the real time clock to address memory locations. not used for nmi enabling/disabling. 4.2.5. real time clock reg isters 4.2.5.1. rtci ? real-time clock index register (shared with nmi enable register) (io) i/o address: 070h default value: bit[6:0]=undefined; bit 7=1 attribute: write only this port is shared with the nmi enable. do not modify the contents of this register without considering the effects on the state of the other bits. reads and writes to this register address flow through to the isa bus. reads to register 70h will cause x-bus reads, but no rtccs# or rtcale will be generated. (the rtc has traditionally been write-only to port 70h.) bit description 7 nmi enable. used by piix4 nmi logic. 6:0 real time clock address. latched by the real time clock to address memory locations within the standard ram bank accessed via the real time clock data register (071h).
e 82371AB (piix4) 85 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.5.2. rtcd ? real-time clock data register (io) i/o address: 071h default value: undefined attribute: read/write the data port for accesses to the rtc standard ram bank. bit description 7:0 standard ram data port. data written to standard ram bank address selected via rtc index register (070h). 4.2.5.3. rtcei ? real-time clock extended index register (io) i/o address: 072h default value: unknown attribute: write only the index port for accesses to the rtc extended ram bank. bit description 7 reserved. 6:0 real time clock extended address. latched by the real time clock to address memory locations within the extended ram bank accessed via the real time clock extended data register (073h). 4.2.5.4. rtced ? real-time clock extended data register (io) i/o address: 073h default value: unknown attribute: read/write the data port for accesses to the rtc extended ram bank. bit description 7:0 extended ram data port. data written to standard ram bank address selected via rtc extended index register (072h).
82371AB (piix4) e 86 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.6. advanced power mana gement (apm) registers this section describes two power management registers ? apmc and apms registers. these registers are located in normal i/o space and must be accessed (via the pci bus) with 8-bit accesses. 4.2.6.1. apmc ? advanced power management control port (io) i/o address: 0b2h default value: 00h attribute: read/write this register passes data (apm commands) between the os and the smi handler. in addition, writes can generate an smi. piix4 operation is not affected by the data in this register. bit description 7:0 apm control port (apmc). writes to this register store data in the apmc register and reads return the last data written. in addition, writes generate an smi, if the apmc_en bit (pci function 3, offset 58h, bit 25) is set to 1. reads do not generate an smi. 4.2.6.2. apms ? advanced power management status port (io) i/o address: 0b3h default value: 00h attribute: read/write this register passes status information between the os and the smi handler. piix4 operation is not affected by the data in this register. bit description 7:0 apm status port (apms). writes store data in this register and reads return the last data written. 4.2.7. x-bus, coprocessor, and reset registers 4.2.7.1. rirq ? reset x-bus irq12/m and irq1 register (io) i/o address: 60h default value: n/a attribute: read only this register clears the mouse interrupt function (irq12/m) and the keyboard interrupt (irq1). reads and writes to this address are accepted by piix4 and sent to isa (keyboard accesses must be enabled if in positive decode). piix4 latches low to high transitions on irq1 and irq12/m (when enabled as mouse interrupt). a read of 60h clears the internally latched signals of irq1 and irq12/m. bit description 7:0 reset irq12 and irq1. no specific pattern. a read of address 60h clears the internally latched irq1 and irq12/m signals.
e 82371AB (piix4) 87 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.7.2. p92 ? port 92 register (io) i/o address: 92h default value: 00h attribute: read/write bit description 7:2 reserved. returns 0 when read. 1 fast_a20 . 1=causes a20m# signal to be asserted to 0. 0=a20m# signal determined by a20gate signal. this signal is internally combined with the a20gate input signal. the result is then output via the a20m# signal to the processor for support of real mode compatible software. the a20gate signal generated by the keyboard is used in conjunction with the fast_a20 bit in the p92 register to generate the a20m# signal that goes to the cpu. the a20m# signal is generated according to the following table: bit 1 a20gate a20m# (input signal) (output signal) 0 negated (low) asserted (low) 0 asserted (high) negated (high) 1 negated (low ) negated (high) 1 asserted (high) negated (high) 0 fast_init. this read/write bit provides a fast software executed processor reset function. this function provides an alternate means to reset the system processor to effect a mode switch from protected virtual address mode to the real address mode. this provides a faster means of reset than is provided by the keyboard controller. writing a 1 to this bit will cause the init signal to pulse active (high) for approximately 16 pci clocks. before another init pulse can be generated via this register, this bit must be written back to a 0. 4.2.7.3. cerr ? coprocessor error register (io) i/o address: f0h default value: n/a attribute: write only writing to this register causes piix4 to assert ignne#. piix4 also negates irq13 (internal to piix4). note, that ignne# is not asserted unless ferr# is active. reads/writes flow through to the isa bus. bit description 7:0 assert ignne#. no special pattern required . a write to address f0h causes assertion of ignne# if ferr# is asserted.
82371AB (piix4) e 88 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 4.2.7.4. rc ? reset control register (io) i/o address: cf9h default value: 00h attribute: read/write bits 1 and 2 in this register are used by piix4 to generate a hard reset or a soft reset. during a hard reset, piix4 asserts cpurst, pcirst#, and rstdrv, as well as reset its core and suspend well logic. during a soft reset, piix4 asserts init. bit description 7:3 reserved. 2 reset cpu (rcpu). this bit is used to initiate (transitions from 0 to 1) a hard reset (bit 1 in this register is set to 1) or a soft reset to the cpu. piix4 will also initiate a hard reset when pwrok is asserted. this bit cannot be read as a 1. 1 system reset (srst). this bit is used to select the type of reset generated when bit 2 in this register is set to 1. when srst=1, piix4 initiates a hard reset to the cpu when bit 2 in this register transitions from 0 to 1. when srst=0, piix4 initiates a soft reset when bit 2 in this register transitions from 0 to 1. 0 reserved.
e 82371AB (piix4) 89 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5. 0. ide contr oller register descriptions (pci function 1) this section describes in detail the registers associated with piix4 ide controller function. this includes programmed i/o (pio), bus master, and ? ultra dma/33 ? synchronous dma functionality. 5.1. ide controller pci configuration registers (pci function 1) 5.1.1. vid ? vendor identifi cation register (function 1) address offset: 00 ? 01h default value: 8086h attribute: read only the vid register contains the vendor identification number. this register, along with the device identification register, uniquely identify any pci device. writes to this register have no effect. bit description 15:0 vendor identification number. this is a 16-bit value assigned to intel. 5.1.2. did ? device identifi cation register (function 1) address offset: 02 ? 03h default value: 7111h attribute: read only the did register contains the device identification number. this register, along with the vid register, define the piix4 function. writes to this register have no effect. bit description 15:0 device identification number . this is a 16-bit value assigned to the piix4 ide controller function. 5.1.3. pcicmd ? pci command register (function 1) address offset: 04 ? 05h default value: 0000h attribute: read/write the pcicmd register controls access to the i/o space registers. bit description 15:10 reserved. read 0. 9 fast back to back enable (fbe) (not implemented). this bit is hardwired to 0. 8:5 reserved. read as 0. 4 memory write and invalidate enable (not implemented). this bit is hardwired to 0.
82371AB (piix4) e 90 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 3 special cycle enable (not implemented). this bit is hardwired to 0. 2 bus master function enable (bme). 1=enable. 0=disable. 1 memory space enable (not implemented). this bit is hardwired to 0. 0 i/o space enable (iose). this bit controls access to the i/o space registers. when iose=1, access to the legacy ide ports (both primary and secondary) and the pci bus master ide i/o registers is enabled. the base address register for the pci bus master ide i/o registers should be programmed before this bit is set to 1. 5.1.4. pcists ? pci device s tatus register (function 1) address offset: 06 ? 07h default value: 0280h attribute: read/write pcists is a 16-bit status register for the ide interface function. the register also indicates piix4?s devsel# signal timing. bit description 15 detected parity error (not implemented). read as 0. 14 serr# status (not implemented). read as 0. 13 master-abort status (mas) ? r/wc. when the bus master ide interface function, as a master, generates a master abort, mas is set to a 1. software sets mas to 0 by writing a 1 to this bit. 12 received target-abort status (rta) ? r/wc. when the bus master ide interface function is a master on the pci bus and receives a target abort, this bit is set to a 1. software sets rta to 0 by writing a 1 to this bit. 11 signaled target abort status (sta) ? r/wc. this bit is set when the piix4 ide interface function is targeted with a transaction that piix4 terminates with a target abort. software resets sta to 0 by writing a 1 to this bit. 10:9 devsel# timing status (devt) ? ro. for piix4, devt=01 indicating medium timing for devsel# assertion when performing a positive decode. devsel# timing does not include configuration cycles. 8 data parity detected (dpd) (not implemented). read as 0. 7 fast back to back capable (fbc) ? ro. hardwired to 1. this bit indicates to the pci master that piix4 as a target, is capable of accepting fast back-to-back transactions. 6:0 reserved . read as 0?s.
e 82371AB (piix4) 91 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5.1.5. rid ? revision identi fication register (function 1) address offset: 08h default value: initial stepping=00h. refer to piix4 specification updates for other values programmed here. attribute: read only this 8-bit register contains device stepping information. writes to this register have no effect. bit description 7:0 revision id byte. the register is hardwired to the default value. 5.1.6. classc ? class code r egister (function 1) address offset: 09 - 0bh default value: 010180h attribute: read on ly this register identifies the base class code, sub class code, and device programming interface for piix4 pci function 1. bit description 23:16 base class code (basec). 01h=mass storage device. 15:8 sub class code (scc) . 01h=ide controller. 7:0 programming interface (pi). 80h=capable of ide bus master operation. 5.1.7. mlt ? master latency timer register (function 1) address offset: 0dh default value: 00h attribute: read/write mlt controls the amount of time piix4, as a bus master, can burst data on the pci bus. the count value is an 8- bit quantity. however, mlt[3:0] are reserved and 0 when determining the count value. the master latency timer is cleared and suspended when piix4 is not asserting frame#. when piix4 asserts frame#, the counter begins counting. if piix4 finishes its transaction before the count expires, the mlt count is ignored. if the count expires before the transaction completes (count=# of clocks programmed in mlt), piix4 initiates a transaction termination as soon as its phlda# is removed. the number of clocks programmed in the mlt represents the guaranteed time slice (measured in pci clocks) allotted to piix4. bit description 7:4 master latency timer count value (mltc). piix4-initiated pci burst cycles can last indefinitely, as long as phlda# remains active. however, if phlda# is negated after the burst cycle is initiated, piix4 limits the burst cycle to the number of pci bus clocks specified by this field. 3:0 reserved.
82371AB (piix4) e 92 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5.1.8. hedt ? header type re gister (function 1) address offset: 0eh default value: 00h attribute: read only this register identifies the ide controller module as a single function device. bit description 7:0 device type (devicet). 00. multi-function device capability for piix4 is defined by the hedt register in function 0. 5.1.9. bmiba ? bus master in terface base address register (function 1) address offset: 20 ? 23h default value: 00000001h attribute: read/write this register selects the base address of a 16-byte i/o space to provide a software interface to the bus master functions. only 12 bytes are actually used (6 bytes for primary and 6 bytes for secondary). bit description 31:16 reserved. hardwired to 0. 15:4 bus master interface base address (bmiba). these bits provide the base address for the bus master interface registers and correspond to ad[15:4]. 3:2 reserved. hardwired to 0. 1 reserved. 0 resource type indicator (rte) ? ro. this bit is hardwired to 1 indicating that the base address field in this register maps to i/o space.
e 82371AB (piix4) 93 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5.1.10. idetim ? ide timing r egister (function 1) address offset: 40 ? 41h=primary channel; 42 ? 43h=secondary channel default value: 0000h attribute: read/write only this register controls piix4?s ide interface and selects the timing characteristics of the pci local bus ide cycle for pio and standard bus master transfers. note that primary and secondary denotations distinguish between the cables and the 0/1 denotations distinguish between master (0) and slave (1). see table 14 for programming values for various pio timing modes. bit description 15 ide decode enable (ide). 1=enable. 0=disable. when enabled, i/o transactions on pci targeting the ide ata register blocks (command block and control block) are positively decoded on pci and driven on the ide interface. when disabled, these accesses are subtractively decoded to isa. 14 slave ide timing register enable (sitre). 1=enable sidetim register. 0=disable (default) sidetim register. when enabled, the isp and rtc values can be programmed uniquely for each drive 0 through the fields in this register and these values can be programmed for each drive 1 through the sidetim register. when disabled, the isp and rtc values programmed in this register apply to both drive 0 and drive 1 on each channel. 13:12 iordy sample point (isp). this field selects the number of pci clocks between diox# assertion and the first iordy sample point. bits[13:12] number of clocks 00 5 01 4 10 3 11 2 11:10 reserved 9:8 recovery time (rtc). this field selects the minimum number of pci clocks between the last iordy# sample point and the diox# strobe of the next cycle. bits[9:8] number of clocks 00 4 01 3 10 2 11 1 7 dma timing enable only (dte1). when dte1=0, both dma (bus master) and pio data transfers for drive 1 use the fast timing mode (this is the preferred setting for optimal performance). when dte1=1, fast timing mode is enabled for dma data transfers for drive 1. pio transfers run in compatible timing. 6 prefetch and posting enable (ppe1). when ppe1=1, prefetch and posting to the ide data port is enabled for drive 1. when ppe1=0, prefetch and posting is disabled for drive 1. 5 iordy sample point enable drive select 1 (ie1). when ie1=0, iordy sampling is disabled for drive 1. the internal iordy signal is forced asserted guaranteeing that iordy is sampled asserted at the first sample point as specified by the isp field in this register. when ie1=1 and the currently selected drive (via a copy of bit 4 of 1x6h) is drive 1, all accesses to the enabled i/o address range sample iordy. the iordy sample point is specified by the isp field in this register.
82371AB (piix4) e 94 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 4 fast timing bank drive select 1 (time1). when time1=0, accesses to the data port of the enabled i/o address range use the 16-bit compatible timing. when time1=1 and the currently selected drive (via a copy of bit 4 of 1x6h) is drive 1, accesses to the data port of the enabled i/o address range use fast timings. pio accesses to the data port use fast timing only if bit 7 of this register (dte1) is zero. accesses to all non-data ports of the enabled i/o address range always use the 8-bit compatible timings. 3 dma timing enable only (dte0). when dte1=0, both dma and pio data transfers for drive 0 use the fast timing mode (this is the preferred setting for optimal performance). when dte0=1, fast timing mode is enabled for dma data transfers for drive 0. pio transfers run in compatible timing. 2 prefetch and posting enable (ppe0). when ppe0=1, prefetch and posting to the ide data port is enabled for drive 0. when ppe0=0, prefetch and posting is disabled for drive 0. 1 iordy sample point enable drive select 0 (ie0). when ie0=0, iordy sampling is disabled for drive 0. the internal iordy signal is forced asserted guaranteeing that iordy is sampled asserted at the first sample point as specified by the isp field in this register. when ie0=1 and the currently selected drive (via a copy of bit 4 of 1x6h) is drive 0, all accesses to the enabled i/o address range sample iordy. the iordy sample point is specified by the isp field in this register. 0 fast timing bank drive select 0 (time0). when time0=0, accesses to the data port of the enabled i/o address range uses the 16-bit compatible timing. when time0=1 and the currently selected drive (via a copy of bit 4 of 1x6h) is drive 0, accesses to the data port of the enabled i/o address range use fast timings. pio accesses to the data port use fast timing only if bit 3 of this register (dte0) is 0. accesses to all non-data ports of the enabled i/o address range always use the 8-bit compatible timings.
e 82371AB (piix4) 95 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5.1.11. sidetim ? slave ide t iming register (function 1) address offset: 44h default value: 00h attribute: read/write only this register controls piix4?s ide interface and selects the timing characteristics for the slave drives on each ide channel. this allows for programming of independent operating modes for each ide agent. this register has no affect unless the sitre bit is enabled in the idetim register. see table 14 for programming values for various pio timing modes. bit description 7:6 secondary drive 1 iordy sample point (sisp1). this field selects the number of pci clocks between sdiox# assertion and the first siordy sample point for the slave drive on the secondary channel. bits[7:6] number of clocks 00 5 01 4 10 3 11 2 5:4 secondary drive 1 recovery time (srtc1). this field selects the minimum number of pci clocks between the last siordy# sample point and the sdiox# strobe of the next cycle for the slave drive on the secondary channel. bits[5:4] number of clocks 00 4 01 3 10 2 11 1 3:2 primary drive 1 iordy sample point (pisp1). this field selects the number of pci clocks between pdiox# assertion and the first piordy sample point for the slave drive on the primary channel. bits[3:2] number of clocks 00 5 01 4 10 3 11 2 1:0 primary drive 1 recovery time (prtc1). this field selects the minimum number of pci clocks between the last piordy# sample point and the pdiox# strobe of the next cycle for the slave drive on the primary channel. bits[1:0] number of clocks 00 4 01 3 10 2 11 1
82371AB (piix4) e 96 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5.1.12. udmactl ? ultra dma/3 3 control register (function 1) address offset: 48h default value: 00h attribute: read/write this register enables each individual channel and drive for ultra dma/33 operation. for non-ultra dma/33 operation, this register should be left programmed to its default value. bit description 7:4 reserved. 3 secondary drive 1 udma enable (ssde1). 1=enable ultra dma/33 mode for secondary channel drive 1. 0=disable (default). 2 secondary drive 0 udma enable (ssde0). 1=enable ultra dma/33 mode for secondary channel drive 0. 0=disable (default). 1 primary drive 1 udma enable (psde1). 1=enable ultra dma/33 mode for primary channel drive 1. 0=disable (default). 0 primary drive 0 udma enable (psde0). 1=enable ultra dma/33 mode for primary channel drive 0. 0=disable (default). 5.1.13. udmatim ? ultra dma/3 3 timing register (function 1) address offset: 4a ? 4bh default value: 00h attribute: r ead/write only this register controls the timings used by each ultra dma/33 enabled device. for non-ultra dma/33 operation, this register should be left programmed to its default value.
e 82371AB (piix4) 97 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 15:14 reserved. 13:12 secondary drive 1 cycle time (sct1). these bit settings determine the minimum data write strobe cycle time (ct) and minimum ready to pause time (rp). bits[13:12] time 00 ct=4 pciclk, rp=6 pciclk 01 ct=3 pciclk, rp=5 pciclk 10 ct=2 pciclk, rp=4 pciclk 11 reserved 11:10 reserved. 9:8 secondary drive 0 cycle time (sct0). these bit settings determine the minimum data write strobe cycle time (ct) and minimum ready to pause time (rp). bits[13:12] time 00 ct=4 pciclk, rp=6 pciclk 01 ct=3 pciclk, rp=5 pciclk 10 ct=2 pciclk, rp=4 pciclk 11 reserved 7:6 reserved. 5:4 primary drive 1 cycle time (pct1). these bit settings determine the minimum data write strobe cycle time (ct) and minimum ready to pause time (rp). bits[13:12] time 00 ct=4 pciclk, rp=6 pciclk 01 ct=3 pciclk, rp=5 pc iclk 10 ct=2 pciclk, rp=4 pciclk 11 reserved 3:2 reserved. 1:0 primary drive 0 cycle time (pct0). these bit settings determine the minimum data write strobe cycle time (ct) and minimum ready to pause time (rp). bits[13:12] time 00 ct=4 pciclk, rp=6 pciclk 01 ct=3 pciclk, rp=5 pciclk 10 ct=2 pciclk, rp=4 pciclk 11 reserved
82371AB (piix4) e 98 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 13 . ultra dma/33 timing mode settings bit setting mode 0 (120 ns strobe period) mode 1 (90 ns strobe period) mode 2 (60 ns strobe period) cycle time bit settings 00 01 10 table 14 . dma/pio timing values (based on piix4 cable mode and system speed) piix4 drive mode iordy sample point (isp) recovery time (rct) idetim[15:8] drive 0 (master) if slave attached idetim[15:8] drive 0 (master) if no slave attached or slave is mode 0 1 sidetim pri[3:0] sec[7:4] drive 1 (slave) resultant cycle time base operating frequency and cycle time pio0/ compatible 5 clocks (default) 4 clocks (default) c0h 80h 0 30 mhz: 900 ns 33 mhz: 900 ns pio2/sw2 4 clocks 4 clocks d0h 90h 4 30 mhz: 256 ns 33 mhz: 240 ns pio3/mw1 3 clocks 3 clocks e1h a1h 9 30 mhz: 198 ns 33 mhz: 180 ns pio4/mw2 3 clocks 1 clock e3h a3h b 30 mhz: 132 ns 33 mhz: 120 ns notes: 1. this table assumes that if the attached slave drive is mode 0 or is not present, the sitre bit is set to 0. 2. the table assumes that 25 mhz is not supported as a target pci system speed. if the dma timing enable only (dte) bit has been enabled for that drive, this resultant cycle time applies to data transfers performed with dma only.
e 82371AB (piix4) 99 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5.2. ide controller io space registers the pci ide function uses 16 bytes of i/o space, allocated via the bmiba register. all bus master ide i/o space registers can be accessed as byte, word, or dword quantities. the description of the 16 bytes of i/o registers follows. 5.2.1. bmicx ? bus master id e command register (io) address offset: primary channel ? base + 00h; secondary channel ? base + 08h default value: 00h attribute: read/write this register enables/disables bus master capability for the ide function and provides direction control for the ide dma transfers. this register also provides bits that software uses to indicate dma capability of the ide device. bit description 7:4 reserved. 3 bus master read/write control (rwcon). 0=reads; 1=writes. this bit must not be changed when the bus master function is active. while a synchronous dma transfer is in progress, this bit will be read only. the bit will return to read/write once the synchronous dma transfer has been completed or halted. 2:1 reserved. 0 start/stop bus master (ssbm). 1=start; 0=stop. when this bit is set to 1, bus master operation starts. the controller transfers data between the ide device and memory only while this bit is set. master operation can be stopped by writing a 0 to this bit. this results in all state information being lost (i.e., master mode operation cannot be stopped and then resumed). if this bit is set to 0 while bus master operation is still active (i.e., bit 0=1 in the bus master ide status register for that ide channel) and the drive has not yet finished its data transfer (bit 2=0 in the channel?s bus master ide status register), the bus master command is aborted and data transferred from the drive may be discarded by piix4 rather than being written to system memory. this bit is intended to be set to 0 after the data transfer is completed, as indicated by either bit 0 or bit 2 being set in the ide channel?s bus master ide status register.
82371AB (piix4) e 100 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 5.2.2. bmisx ? bus master id e status register (io) address offset: primary channel ? base + 02h; secondary channel ? base + 0ah default value: 00h attribute: read/write clear this register provides status information about the ide device and state of the ide dma transfer. table 15 describes ide interrupt status and bus master ide active bit states after a dma transfer has been started. bit description 7 reserved. this bit is hardwired to 0. 6 drive 1 dma capable (dma1cap) ? r/w. 1=drive 1 is capable of dma transfers. this bit is a software controlled status bit that indicates ide dma device capability and does not affect hardware operation. 5 drive 0 dma capable (dma0cap) ? r/w. 1=drive 0 is capable of dma transfers. this bit is a software controlled status bit that indicates ide dma device capability and does not affect hardware operation. 4:3 reserved. 2 ide interrupt status (ideints) ? r/wc. this bit, when set to a 1, indicates when an ide device has asserted its interrupt line. when bit 2=1, all read data from the ide device has been transferred to main memory and all write data has been transferred to the ide device. software sets this bit to a 0 by writing a 1 to it. irq14 is used for the primary channel and irq15 is used for the secondary channel. note that, if the interrupt status bit is set to a 0 by writing a 1 to this bit while the interrupt line is still at the active level, this bit remains 0 until another assertion edge is detected on the interrupt line. 1 ide dma error ? r/wc. this bit is set to 1 when piix4 encounters a target abort or master abort while transferring data on the pci bus. software sets this bit to a 0 by writing a 1 to it. 0 bus master ide active (bmidea) ? ro. piix4 sets this bit to 1 when bit 0 in the bmicx register is set to 1. piix4 sets this bit to 0 when the last transfer for a region is performed (where eot for that region is set in the region descriptor). piix4 also sets this bit to 0 when bit 0 of the bmicx register is set to 0. when this bit is read as a 0, all data transferred from the drive during the previous bus master command is visible in system memory, unless the bus master command was aborted. table 15 . interrupt/activity status combinations bit 2 bit 0 description 0 1 dma transfer is in progress. no interrupt has been generated by the ide device. 1 0 the ide device generated an interrupt and the physical region descriptors exhausted. this is normal completion where the size of the physical memory regions is equal to the ide device transfer size. 1 1 the ide device generated an interrupt. the controller has not reached the end of the physical memory regions. this is a valid completion case when the size of the physical memory regions is larger than the ide device transfer size.
e 82371AB (piix4) 101 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 15 . interrupt/activity status combinations bit 2 bit 0 description 0 0 error condition. if the ide dma error bit is 1, there is a problem transferring data to/from memory. specifics of the error have to be determined using bus-specific information. if the error bit is 0, the prd specified a smaller buffer size than the programmed ide transfer size. 5.2.3. bmidtpx ? bus master ide descriptor table pointer register (io) address offset: primary channel ? base + 04h; secondary channel ? base + 0ch default value: 00000000h attribute: read/write this register provides the base memory address of the descriptor table. the descriptor table must be dword aligned and not cross a 4-kbyte boundary in memory. bit description 31:2 descriptor table base address (dtba). bits [31:2] correspond to a[31:2]. 1:0 reserved.
82371AB (piix4) e 102 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6. 0. usb host controller register descriptions (pci function 2) this section describes in detail the registers associated with the piix4 usb host controller function. this includes uhci compatible registers and legacy keyboard registers. 6.1. usb host controller pci configuration registers (pci function 2) 6.1.1. vid ? vendor identifi cation register (function 2) address offset: 00 ? 01h default value: 8086h attribute: read only the vid register contains the vendor identification number. this register, along with the device identification register, uniquely identifies any pci device. writes to this register have no effect. bit description 15:0 vendor identification number. this is a 16-bit value assigned to intel. 6.1.2. did ? device identifi cation register (function 2) address offset: 02 - 03h default value: 7112h attribute: read only the did register contains the device identification number. this register, along with the vid register, define the piix4 usb host controller. writes to this register have no effect. bit description 15:0 device identification number . this is a 16-bit value assigned to the piix4 usb host controller.
e 82371AB (piix4) 103 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.1.3. pcicmd ? pci command register (function 2) address offset: 04 - 05h default value: 00h attribute: read/write this register controls access to the i/o space registers. bit description 15:10 reserved. read 0. 9 fast back to back enable (not implemented). this bit is hardwired to 0. 8:5 reserved. read as 0. 4 memory write and invalidate enable (not implemented). this bit is hardwired to 0. 3 special cycle enable (not implemented). this bit is hardwired to 0. 2 bus master enable (bme). this bit controls piix4?s ability to act as a master on the pci bus for the host controller transfers. a value of 0 disables the device from generating pci accesses. a value of 1 allows the device to behave as a usb host controller bus master. this bit must be set to 1 before usb transactions can start. 1 memory space enable (not implemented). this bit is hardwired to 0. 0 i/o space enable (iose). 1=enable. 0=disable. this bit controls the access to the i/o space registers. if this bit is set, access to the host controller io registers is enabled. the base register for the i/o registers must be programmed before this bit is set. 6.1.4. pcists ? pci device s tatus register (function 2) address offset: 06 - 07h default value: 0280h attribute: read/write dsr is a 16-bit status register that reports the occurrence of a pci master-abort by the usb hc module or a pci target-abort when the serial bus module is a master. the register also indicates the usb hc module devsel# signal timing that is hardwired in the usb hc module. bit description 15 detected parity (not implemented). read as 0. 14 serr# status (not implemented). read as 0. 13 master-abort status (mas) ? r/wc . when the serial bus module receives a master-abort from a pci transaction, mas is set to a 1. software sets mas to 0 by writing a 1 to this bit. 12 received target-abort status (rta) ? r/wc. when the serial bus module is a master on the pci bus and receives a target-abort, this bit is set to a 1. software resets rta to 0 by writing a 1 to this bit.
82371AB (piix4) e 104 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 11 signaled target-abort status (sta) ? r/wc. this bit is set when the serial bus module function is targeted with a transaction that the serial bus module terminates with a target abort. software resets sta to 0 by writing a 1 to this bit. 10:9 devsel# timing status (devt) ? ro. this 2-bit field defines the timing for devsel# assertion. these read only bits indicate piix4?s devsel# timing when performing a positive decode. since piix4 always generate the devsel# with medium timing, devt=01. this devsel# timing does not include configuration cycles. 8 data parity detected (not implemented). read as 0. 7 fast back to back capable (fbc) ? ro. hardwired to 1. this bit indicates to the pci master that serial bus module as a target is capable of accepting fast back-to-back transactions. 6:0 reserved . read as 0?s. 6.1.5. rid ? revision identi fication register (function 2) address offset: 08h default value: initial stepping=00h. refer to piix4 specification updates for other values programmed here. attribute: read only this 8-bit register contains device stepping information. writes to this register have no effect. bit description 7:0 revision id byte. the register is hardwired to the default value. 6.1.6. classc ? class code r egister (function 2) address offset: 09 - 0bh default value: 0c0300h attribute: read only this register identifies the base class code, sub class code, and device programming interface for piix4 pci function 2. bit description 23:16 base class code (basec). 0ch=serial bus controller. 15:8 sub class code (scc) . 03h=universal serial bus host controller. 7:0 programming interface (pi). 00h=universal host controller interface.
e 82371AB (piix4) 105 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.1.7. mlt ? master latency timer register (function 2) address offset: 0dh default value: 00h attribute: read/write mlt is an 8-bit register that controls the amount of time (in terms of pci clocks) the usb module can do transactions on the pci bus. the count value is an 8-bit quantity, however mlt[3:0] are reserved and assumed to be 0 when determining the count value. mlt is used when the usb module becomes the pci bus master and is cleared and suspended when piix4 is not asserting frame#. when piix4 asserts frame#, the counter is enabled and begins counting. if the serial bus module finishes its transaction before count is expired, the mlt value is ignored. if the count expires before the transaction completes, piix4 initiates a transaction termination as soon as the current transaction is completed. the number of clocks programmed in the mlt represents the guaranteed time slice (measured in pci clocks) allotted to piix4, after which it must surrender the bus as soon as the current transaction is completed. bit description 7:4 master latency counter value. piix4 initiated pci cycles (including multiple transactions) can last indefinitely as long as phlda# remains active. however, if phlda# is negated after a transaction is initiated, piix4 limits the duration of the transactions to the number of pci bus clocks specified by this field. 3:0 reserved. 6.1.8. hedt ? header type re gister (function 2) address offset: 0eh default value: 00h attribute: read only this register identifies the serial bus module as a single function device. bit description 7:0 device type (devicet). 00. multi-function device capability for piix4 is defined by the hedt register in function 0. 6.1.9. intln ? interrupt lin e register (function 2) address offset: 3ch default value: 00h attribute: read/write software programs this register with interrupt information concerning the universal serial bus. bit description 7:0 interrupt line. the value in this register has no affect on piix4 hardware operations.
82371AB (piix4) e 106 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.1.10. intpn ? interrupt pin (function 2) address offset: 3dh default value: 04h attribute: read only this register indicates which pci interrupt pin is used for the universal serial bus module interrupt. the usb interrupt is internally ored to the interrupt controller with the pirqd# signal. bit description 7:3 reserved. 2:0 serial bus module interrupt routing. this field is hardwired to 100b to select pirqd#. 6.1.11. sbrnum ? serial bus r elease number (function 2) address offset: 60h default value: 10h attribute: read only this register contains the release of the universal serial bus specification with which this universal serial bus host controller module is compliant. bit description 7:0 serial bus specification release number. all other combinations are reserved. bits[7:0] release number 00h pre-release 1.0 10h release 1.0
e 82371AB (piix4) 107 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.1.12. legsup ? legacy suppo rt register (function 2) pci address offset: c0 - c1h default: 2000h attribute: read/write clear this register provides control and status capability for the legacy keyboard and mouse functions. bit description 15 end of a20gate pass-through status (a20pts) ? r/wc. this bit is set to 1 to indicate that the a20gate pass-through sequence has ended. software must use the enable bits to determine the exact cause of an smi#. software clears this bit by writing a 1 to it. 14 reserved. 13 usb pirq enable (usbpirqden) ? r/w. 1 (default)=usb interrupt is routed to pirqd. 0=usb interrupt does not route to pirqd. this bit prevents the usb controller from generating an interrupt. note that it will probably be configured to generate an smi using bit 4 of this register. default to 1 for compatibility with older usb software. 12 usb irq status (usbirqs) ? ro. this bit is set to 1 to indicate that the usb irq is active. software must use the enable bits to determine the exact cause of an smi#. writing a 1 to this bit will have no effect. software must clear the irq via the usb controller. 11 trap by 64h write status (tby64w) ? r/wc. this bit is set to 1 to indicate that a write to port 64h occurred. software must use the enable bits to determine the exact cause of an smi#. software clears this bit by writing a 1 to it. 10 trap by 64h read status (tby64r) ? r/wc. this bit is set to 1 to indicate that a read to port 64h occurred. software must use the enable bits to determine the exact cause of an smi#. software clears this bit by writing a 1 to it. 9 trap by 60h write status (tby60w) ? r/wc. this bit is set to 1 to indicate that a write to port 60h occurred. software must use the enable bits to determine the exact cause of an smi#. software clears this bit by writing a 1 to it. 8 trap by 60h read status (tby60r) ? r/wc. this bit is set to 1 to indicate that a read to port 60h occurred. software must use the enable bits to determine the exact cause of an smi#. software clears this bit by writing a 1 to it. 7 smi at end of pass-through enable (smiepte) ? r/w. 1=enable the generation of an smi when the a20gate pass-through sequence has ended. 0 (default)=disable. this may be required if an smi is generated by a usb interrupt in the middle of an a20gate pass-through sequence and needs to be serviced later. 6 pass-through status (pss) ? ro. 1=a20gate pass-through sequence is currently in progress. 0 (default)=not currently executing the a20gate pass-through sequence. this bit indicates that the host controller is executing the a20gate pass-through sequence. if software needs to reset this bit, it should set bit 5 to 0 causing the host controller to immediately end the a20gate pass-through sequence.
82371AB (piix4) e 108 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 5 a20gate pass-through enable (a20pten) ? r/w. 1=enable a20gate pass-through sequence. 0 (default)=disable. when enabled, the logic will pass through the following a20gate command sequence: cycle address data write 64h d1h (1 or more) (starts the sequence) write 60h xxh read 64h n/a (0 or more) write 64h ffh (standard end of a20gate pass-through sequence) any deviation seen in the above sequence will cause the host controller to immediately exit the sequence and return to standard operation, performing an i/o trap and generating an smi# if appropriate enable bits are set. when enabled, smi# will not be generated during the sequence, even if the various enable bits are set. note that during a pass-through sequence, the above status bits will not be set for the i/o accesses that are part of the sequence. 4 trap/smi on irq enable (usbsmien) ? r/w. 1=enable smi# generation on usb irq. 0 (default)=disable. 3 trap/smi on 64h write enable (64wen) ? r/w. 1=enable i/o trap and smi# generation on port 64h write. 0 (default)=disable. 2 trap/smi on 64h read enable (64ren) ? r/w. 1=enable i/o trap and smi# generation on port 64h read. 0 (default)=disable. 1 trap/smi on 60h write enable (60wen) ? r/w. 1=enable i/o trap and smi# generation on port 60h write. 0 (default)=disable. 0 trap/smi on 60h read enable (60ren) ? r/w. 1=enable i/o trap and smi# generation on port 60h read. 0 (default)=disable. 6.1.13. usbba ? usb i/o space base address register (function 2) address offset: 20 - 23h default value: 00h attribute: read/write this register contains the base address of the usb i/o registers. bit description 31:16 reserved. hardwired to 0s. must be written as 0s. 15:5 index register base address. bits [15:5] correspond to i/o address signals ad [15:5], respectively. 4:1 reserved. read as 0. 0 resource type indicator (rte) ? ro. this bit is hardwired to 1 indicating that the base address field in this register maps to i/o space.
e 82371AB (piix4) 109 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.1.14. miscsup ? miscellaneo us support register (function 2) address offset: ffh default value: xxh attribute: read/write (byte accesses only) this register provides miscellaneous control capability for the piix4. the following programming model must be followed to read the rtc index register. 1. disable usb. 2. read miscsup register. 3. change the rtc index read enable bit to 1 without changing the other register bits. 4. write new value to miscsup register location. 5. read the rtc index register at i/o location 70h. only bits [6:0] provide rtc index value. bit 7 is indeterminate. 6. read the miscsup register. 7. change the rtc index read enable bit to 0 without changing the othe r register bits. 8. write new value to miscsup register location. 9. re-enable usb as desired. bit description 7:5 undefined. hardwired to 0s. must be written as 0s. 4 rtc index read enable (rtciren). 1=enable reads to io address 70h to return the value located in the rtc index register. 0=disable. 3:0 undefined. read as 0. 6.2. usb host controller io space registers 6.2.1. usbcmd ? usb command register (io) i/o address: base + (00 - 01h) default value: 0000h attribute: read/write (word writeable only) the command register indicates the command to be executed by the serial bus host controller. writing to the register causes a command to be executed. the table following the bit description provides additional information on the operation of the run/stop and debug bits. bit description 15:8 reserved. 7 max packet (maxp). 1=64 bytes. 0=32 bytes. this bit selects the maximum packet size that can be used for full speed bandwidth reclamation at the end of a frame. this value is used by the host controller to determine whether it should initiate another transaction based on the time remaining in the sof counter. use of reclamation packets larger than the programmed size will cause a babble error if executed during the critical window at frame end. the babble error results in the offending endpoint being stalled. software is responsible for ensuring that any packet which could be executed under bandwidth reclamation be within this size limit.
82371AB (piix4) e 110 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 6 configure flag (cf). hcd software sets this bit as the last action in its process of configuring the host controller. this bit has no effect on the hardware. it is provided only as a semaphore service for software. 5 software debug (swdbg). 1=debug mode. 0=normal mode. in sw debug mode, the host controller clears the run/stop bit after the completion of each usb transaction. the next transaction is executed when software sets the run/stop bit back to 1. the swdbg bit must only be manipulated when the controller is in the stopped state. this can be determined by checking the hchalted bit in the usbsts register. 4 force global resume (fgr). 1=host controller sends the global resume signal on the usb. software sets this bit to 0 after 20 ms has elapsed to stop sending the global resume signal. at that time all usb devices should be ready for bus activity. the host controller sets this bit to 1 when a resume event (connect, disconnect, or k-state) is detected while in global suspend mode. software resets this bit to 0 to end global resume signaling. the 1 to 0 transition causes the port to send a low speed eop signal. this bit will remain a 1 until the eop has completed. 3 enter global suspend mode (egsm). 1=host controller enters the global suspend mode. no usb transactions occurs during this time. the host controller is able to receive resume signals from usb and interrupt the system. software resets this bit to 0 to come out of global suspend mode. software writes this bit to 0 at the same time that force global resume (bit 4) is written to 0 or after writing bit 4 to 0. software must also ensure that the run/stop bit (bit 0) is cleared prior to setting this bit. 2 global reset (greset). when this bit is set, the host controller sends the global reset signal on the usb and then resets all its logic, including the internal hub registers. the hub registers are reset to their power on state. this bit is reset by the software after a minimum of 10 ms has elapsed as specified in chapter 7 of the usb specification. note: chip hardware reset has the same effect as global reset (bit 2), except that the host controller does not send the global reset on usb. 1 host controller reset (hcreset). when this bit is set, the host controller module resets its internal timers, counters, state machines, etc. to their initial value. any transaction currently in progress on usb is immediately terminated. this bit is reset by the host controller when the reset process is complete. the hcreset effects on hub registers are slightly different from chip hardware reset and global usb reset. the hcreset affects bits [8,3:0] of the port status and control register (portsc) of each port. hcreset resets the state machines of the host controller including the connect/disconnect state machine (one for each port). when the connect/disconnect state machine is reset, the output that signals connect/disconnect are negated to 0, effectively signaling a disconnect, even if a device is attached to the port. this virtual disconnect causes the port to be disabled. this disconnect and disabling of the port causes bit 1 (connect status change) and bit 3 (port enable/disable change) of the portsc to get set. the disconnect also causes bit 8 of portsc to reset. about 64-bit times after hcreset goes to 0, the connect and low-speed detect will take place and bits 0 and 8 of the portsc will change accordingly. 0 run/stop (rs). 1=run. 0=stop. when set to a 1, the host controller proceeds with execution of the schedule. the host controller continues execution as long as this bit is set. when this bit is set to 0, the host controller completes the current transaction on the usb and then halts. the hchalted bit in the status register indicates when the host controller has finished the transaction and has entered the stopped state. the host controller clears this bit when the following fatal errors occur: consistency check failure, pci bus errors.
e 82371AB (piix4) 111 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 16 . run/stop, debug bit interaction swdbg (bit 5) run/stop (bit 0) operation 0 0 if executing a command, the host controller completes the command and then stops. the 1.0 ms frame counter is reset and command list execution resumes from start of frame using the frame list pointer selected by the current value in the frnum register. (while run/stop=0, the frnum register can be reprogrammed.) 0 1 execution of the command list resumes from start of frame using the frame list pointer selected by the current value in the frnum register. the host controller remains running until the run/stop bit is cleared (by software or hardware). 1 0 if executing a command, the host controller completes the command and then stops and the 1.0 ms frame counter is frozen at its current value. all status are preserved. the host controller begins execution of the command list from where it left off when the run/stop bit is set. 1 1 execution of the command list resumes from where the previous execution stopped. the run/stop bit is set to 0 by the host controller when a td is being fetched. this causes the host controller to stop again after the execution of the td (single step). when the host controller has completed execution, the hchalted bit in the status register is set. 6.2.2. usbsts ? usb status r egister (io) i/o address: base + (02 - 03h) default value: 0000h attribute: read/write clear this register indicates pending interrupts and various states of the host controller. the status resulting from a transaction on the serial bus is not indicated in this register. software sets a bit to 0 in this register by writing a 1 to it. bit description 15:6 reserved . 5 hchalted. the host controller sets this bit to 1 after it has stopped executing as a result of the run/stop bit being set to 0, either by software or by the host controller hardware (debug mode or an internal error). 4 host controller process error. the host controller sets this bit to 1 when it detects a fatal error and indicates that the host controller suffered a consistency check failure while processing a transfer descriptor. an example of a consistency check failure would be finding an illegal pid field while processing the packet header portion of the td. when this error occurs, the host controller clears the run/stop bit in the command register to prevent further schedule execution. a hardware interrupt is generated to the system. 3 host system error. the host controller sets this bit to 1 when a serious error occurs during a host system access involving the host controller module. in a pci system, conditions that set this bit to 1 include pci parity error, pci master abort, and pci target abort. when this error occurs, the host controller clears the run/stop bit in the command register to prevent further execution of the scheduled tds. a hardware interrupt is generated to the system.
82371AB (piix4) e 112 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 2 resume detect. the host controller sets this bit to 1 when it receives a ? resume ? signal from a usb device. this is only valid if the host controller is in a global suspend state (bit 3 of command register=1). 1 usb error interrupt. the host controller sets this bit to 1 when completion of a usb transaction results in an error condition (e.g., error counter underflow). if the td on which the error interrupt occurred also had its ioc bit set, both this bit and bit 0 are set. 0 usb interrupt (usbint). the host controller sets this bit to 1 when the cause of an interrupt is a completion of a usb transaction whose transfer descriptor had its ioc bit set. the host controller also sets this bit to 1 when a short packet is detected (actual length field in td is less than maximum length field in td), and short packet detection is enabled in that td. 6.2.3. usbintr ? usb interru pt enable register (io) i/o address: base + (04 - 05h) default value: 0000h attribute: read/write this register enables and disables reporting of the corresponding interrupt to the software. when a bit is set and the corresponding interrupt is active, an interrupt is generated to the host. fatal errors (host controller processor error bit 4, usbsts register) cannot be disabled by the host controller. interrupt sources that are disabled in this register still appear in the status register to allow the software to poll for events. bit description 15:4 reserved . 3 short packet interrupt enable. 1=enabled. 0=disabled. 2 interrupt on complete (ioc) enable. 1=enabled. 0=disabled. 1 resume interrupt enable. 1=enabled. 0=disabled. 0 time-out/crc interrupt enable. 1=enabled. 0=disabled.
e 82371AB (piix4) 113 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.2.4. frnum ? frame number register (io) i/o address: base + (06 - 07h) default value: 0000h attribute: read/write (write s must be word writes) bits [10:0] of this register contain the current frame number which is included in the frame sof packet. this register reflects the count value of the internal frame number counter. bits [9:0] are used to select a particular entry in the frame list during schedule execution. this register is updated at the end of each frame time. this register must be written as a word. byte writes are not supported. this register cannot be written unless the host controller is in the stopped state as indicated by the hchalted bit (usbsts register). a write to this register while the run/stop bit is set (usbcmd register) is ignored. bit description 15:11 reserved. 10:0 frame list current index/frame number. bits [10:0] provide the frame number in the sof frame. the value in this register increments at the end of each time frame (approximately every 1 ms). in addition, bits [9:0] are used for the frame list current index and correspond to memory address signals [11:2]. 6.2.5. flbaseadd ? fr ame list base address register (io) i/o address: base + (08 - 0bh) default value: undefined attribute: read/write this 32-bit register contains the beginning address of the frame list in the system memory. hcd loads this register prior to starting the schedule execution by the host controller. when written, only the upper 20 bits are used. the lower 12 bits are written as 0 (4-kbyte alignment). the contents of this register are combined with the frame number counter to enable the host controller to step through the frame list in sequence. the two least significant bits are always 00. this requires dword alignment for all list entries. this configuration supports 1,024 frame list entries. bit description 31:12 base address. these bits correspond to memory address signals [31:12], respectively. 11:0 reserved. must be written as 0s.
82371AB (piix4) e 114 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.2.6. sofmod ? start of fra me (sof) modify register (io) i/o address: base + (0ch) default value: 40h attribute: read/write this 1-byte register is used to modify the value used in the generation of sof timing on the usb. only the seven least significant bits are used. when a new value is written into these 7 bits, the sof timing of the next frame will be adjusted. this feature can be used to adjust out any offset from the clock source that generates the clock that drives the sof counter. this register can also be used to maintain real time synchronization with the rest of the system so that all devices have the same sense of real time. using this register, the frame length can be adjusted across the full range required by the usb specification. its initial programmed value is system dependent based on the accuracy of hardware usb clock and is initialized by system bios. it may be reprogrammed by usb system software at any time. its value will take effect from the beginning of the next frame. this register is reset upon a host controller reset or global reset. software must maintain a copy of its value for reprogramming if necessary. bit description 7 reserved. 6:0 sof timing value. guidelines for the modification of frame time are contained in chapter 7 of the usb specification. the sof cycle time (number of sof counter clock periods to generate a sof frame length) is equal to 11,936 + value in this field. the default value is decimal 64 which gives a sof cycle time of 12,000. for a 12-mhz sof counter clock input, this produces a 1-ms frame period. the following table indicates what sof timing value to program into this field for a certain frame period. frame length ( # 12-mhz clocks) sof reg. value (decimal) (decimal) 11,936 0 11,937 1 . . . . 11,999 63 12,000 64 12,001 65 . . . . 12,062 126 12,063 127
e 82371AB (piix4) 115 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 6.2.7. portsc ? port status and control register (io) i/o address: base + (10 - 11h) ? port 0 base + (12 - 13h) ? port 1 default: 0080h access: read/write (word writeable only) after a power-up reset, global reset, or host controller reset, the initial conditions of a port are: no device connected, port disabled, and the bus line status is 00 (single-ended zero). note: if a device is attached, the port state will transition to the attached state and system software will process this as with any status change notification. it make take up to 64 usb bit times for the port transition to occur. if the host controller is in global suspend mode, then, if any of bits [6,3,1] gets set, the host controller will signal a global resume. refer to chapter 11 of the usb specification for details on hub operation. bit description 15:13 reserved. must be written as 0s when writing this register. 12 suspend ? r/w. 1=port in suspend state. 0=port not in suspend state. this bit should not be written to a 1 if global suspend is active (bit 3=1 in the usbcmd register). bit 2 and bit 12 of this register define the hub states as follows: bits [12,2] hub port state x0 disable 01 enable 11 suspend when in suspend state, downstream propagation of data is blocked on this port, except for single- ended 0 resets (global reset and port reset). the blocking occurs at the end of the current transaction, if a transaction was in progress when this bit was written to 1. in the suspend state, the port is sensitive to resume detection. note that the bit status does not change until the port is suspended and that there may be a delay in suspending a port if there is a transaction currently in progress on the usb. 11 over-current indicator change ? r/wc. 1=a change from 1 to 0 has been detected on the over- current (oc[x]#) pin for this port. 0=no change has been detected. software sets this bit to 0 by writing a 1 to it. 10 over-current indicator ? ro. 1=overcurrent pin (oc[x]#) for this port is at logic 0 indicating over- current condition. 0=overcurrent pin for this port is at logic 1 indicating a normal condition. if asserted, the corresponding port is disabled. 9 port reset ? r/w . 1=port is in reset. 0=port is not in reset. when in the reset state, the port is disabled and sends the usb reset signaling. note that host software must guarantee that the reset signaling is active for the proper amount of time as specified in the usb specification. 8 low speed device attached ? ro. 1=low speed device is attached to this port. 0=full speed device. writes have no effect. 7 reserved ? ro. always read as 1. 6 resume detect ? r/w. 1=resume detected/driven on port. 0=no resume (k-state) detected/driven on port. software sets this bit to a 1 to drive resume signaling. the host controller sets this bit to a 1 if a j-to-k transition is detected while the port is in the suspend state. note that when this bit is 1, a k-state is driven on the port as long as this bit remains 1 and the port is still in suspend state. writing a 0 (from 1) causes the port to send a low speed eop. this bit will remain a 1 until the eop has completed.
82371AB (piix4) e 116 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 5:4 line status ? ro. these bits reflect the d+ (bit 4) and d ? (bit 5) signals lines? logical levels. these bits are used for fault detect and recovery as well as for usb diagnostics. this field is updated at eof2 time (see chapter 11 of the usb specification). 3 port enable/disable change ? r/wc. 1=port enabled/disabled status has changed. 0=no change. for the root hub, this bit gets set only when a port is disabled due to disconnect on that port or due to the appropriate conditions existing at the eof2 point (see chapter 11 of the usb specification). software clears this bit by writing a 1 to it. 2 port enabled/disabled ? r/w. 1=enable. 0=disable. ports can be enabled by host software only. ports can be disabled by either a fault condition (disconnect event, overcurrent condition, or other fault condition) or by host software. note that the bit status does not change until the port state actually changes and that there may be a delay in disabling or enabling a port if there is a transaction currently in progress on the usb. 1 connect status change ? r/wc. 1=change in current connect status. 0=no change. indicates a change has occurred in the port?s current connect status (see bit 0). the hub device sets this bit for any changes to the port device connect status, even if system software has not cleared a connect status change. if, for example, the insertion status changes twice before system software has cleared the changed condition, hub hardware will be ? setting ? an already-set bit (i.e., the bit will remain set). however, the hub transfers the change bit only once when the host controller requests a data transfer to the status change endpoint. system software is responsible for determining state change history in such a case. software sets this bit to 0 by writing a 1 to it. 0 current connect status ? ro. 1=device is present on port. 0=no device is present. this value reflects the current state of the port, and may not correspond directly to the event that caused the connect status change bit (bit 1) to be set.
e 82371AB (piix4) 117 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7. 0. power management register descriptions this section describes in detail the registers associated with the piix4 power management function. this includes device monitoring, suspend and resume functionality, clock control, and smbus operation. 7.1. powe r management pci configuration registers (pci function 3) 7.1.1. vid ? vendor identifi cation register (function 3) address offset: 00 ? 01h default value: 8086h attribute: read only the vid register contains the vendor identification number. this register, along with the device identification register, uniquely identifies any pci device. writes to this register have no effect. bit description 15:0 vendor identification number. this is a 16-bit value assigned to intel. 7.1.2. did ? device i dentification register (function 3) address offset: 02 - 03h default value: 7113h attribute: read only the did register contains the device identification number. this register, along with the vid register, define the piix4 power management controller. writes to this register have no effect. bit description 15:0 device identification number . this is a 16-bit value assigned to the piix4 power management controller. 7.1.3. pcicmd ? pci command register (function 3) address offset: 04 - 05h default value: 00h attribute: read/write this register controls access to the i/o space registers. bit description 15:10 reserved. read 0. 9 fast back to back enable (not implemented). this bit is hardwired to 0. 8:5 reserved. read as 0. 4 memory write and invalidate enable (not implemented). this bit is hardwired to 0.
82371AB (piix4) e 118 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 3 special cycle enable (not implemented). this bit is hardwired to 0. 2 bus master enable (not implemented). this bit is hardwired to 0. 1 memory space enable (not implemented). this bit is hardwired to 0. 0 i/o space enable (iose). 1=enable. 0=disable. this bit controls the access to the smbus i/o space registers whose base address is described in the smbus base address register. if this bit is set, access to the smbus io registers is enabled. the base register for the i/o registers must be programmed before this bit is set. when disabled, all io accesses associated with smbus base address are disabled. this bit functions independent of the state of function 3 power management io space enable (pmiose) bit (pmregmisc register, bit 0). 7.1.4. pcists ? pci device s tatus register (function 3) address offset: 06 - 07h default value: 0280h attribute: read/write dsr is a 16-bit status register that reports the occurrence of a pci target-abort when the power management function is a target device. the register also indicates the power management devsel# signal timing that is hardwired in the module. bit description 15 detected parity (not implemented). this bit is hardwired to 0. 14 serr# status (not implemented). this bit is hardwired to 0. 13 master-abort status (not implemented). this bit is hardwired to 0. 12 received target-abort status (not implemented). this bit is hardwired to 0. 11 signaled target-abort status (sta) ? r/wc. this bit is set when the power management function is targeted with a transaction that it terminates with a target abort. software resets sta to 0 by writing a 1 to this bit. 10:9 devsel# timing status (devt) ? ro. this 2-bit field defines the timing for devsel# assertion. these read only bits indicate piix4?s devsel# timing when performing a positive decode. since piix4 always generate the devsel# with medium timing, devt=01. this devsel# timing does not include configuration cycles. 8 data parity detected (not implemented). this bit is hardwired to 0. 7 fast back to back capable (fbc) ? ro. hardwired to 1. this bit indicates to the pci master that power management as a target is capable of accepting fast back-to-back transactions. 6:0 reserved . read as 0?s.
e 82371AB (piix4) 119 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.5. rid ? revision identi fication register (function 3) address offset: 08h default value: initial stepping=00h. refer to piix4 specification updates for other values programmed here. attribute: read only this 8-bit register contains device stepping information. writes to this register have no effect. bit description 7:0 revision id byte. the register is hardwired to the default value. 7.1.6. classc ? class code r egister (function 3) address offset: 09 - 0bh default value: 068000h attribute: read only this register identifies the base class code, sub class code, and device programming interface for piix4 pci function 3. bit description 23:16 base class code (basec). 06h=bridge device. 15:8 sub class code (scc) . 80h=other bridge device. 7:0 programming interface (pi). 00h=no specific register level programming defined. 7.1.7. hedt ? header type re gister (function 3) address offset: 0eh default value: 00h attribute: read only this register identifies the power management module as a single function device. bit description 7:0 device type (devicet). multi-function device capability for piix4 is defined by the hedt register in function 0.
82371AB (piix4) e 120 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.8. intln ? interrupt lin e register (function 3) address offset: 3ch default value: 00h attribute: read/write software programs this register with interrupt information concerning the power management module. bit description 7:0 interrupt line. the value in this register has no affect on piix4 hardware operations. 7.1.9. intpn ? interrupt pin (function 3) address offset: 3dh default value: 01h attribute: read only this register indicates that pci interrupt pin pirqa# is used for the power management module. bit description 7:3 reserved. 2:0 serial bus module interrupt routing. this field is hardwired to 01h to indicate that pci interrupt pin pirqa# is used. 7.1.10. pmba ? power manageme nt base address (function 3) address offset: 40 - 43h default value: 00000001h attribute: read/write this register contains the base address of the power management i/o registers. bit description 31:16 reserved. hardwired to 0s. must be written as 0s. 15:6 index register base address. bits [15:6] correspond to i/o address signals ad [15:6], respectively. 5:1 reserved. read as 0. 0 resource type indicator (rte) ? ro. this bit is hardwired to 1 indicating that the base address field in this register maps to i/o space.
e 82371AB (piix4) 121 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.11. cnta ? count a (funct ion 3) address offset: 44 ? 47h default value: 00h attribute: read/write this register contains the initial counts of the idle timers for devices 0 ? 11, the selection bits for the timer granularity of the timers for devices 0, 1, 2 and 3. in addition, it contains the count for the slow burst timer. bit description 31:28 slow burst count (sb_cnt) ? r/w. specifies the initial and reload value of the slow burst timer. 27:23 idle timer count d (idl_cntd) ? r/w. specifies the initial and reload count of the device 11 (user interface) idle timer. 22 device 11 idle timer resolution (idl_sel_dev11) ? r/w. selects the clock resolution of the device 11 (user interface) idle timer. 0=1 second granular. 1=1 minute granular. 21:17 idle timer count c (idl_cntc) ? r/w. specifies the initial and reload count of the device 9 ? 10 (generic range) idle timers. 16:12 idle timer count b (idl_cntb) ? r/w. specifies the initial and reload count of the device 4 ? 7 (audio, floppy, serial ports, parallel port) idle timers. 11:8 sw idle timer count (sw_cnt) ? r/w. specifies the initial and reload count of the device 3 (secondary ide drive 1, software smi) idle timer. 7 device 3 idle timer resolution (idl_sel_dev3) ? r/w. selects the clock source for the device 3 (secondary ide drive 1, software smi) idle timer. 0=8 second granular. 1=1 ms granular. 6 device 2 idle timer resolution (idl_sel_dev2) ? r/w. selects the clock source for the device 2 (secondary ide drive 0) idle timer. 0=8 second granular. 1=1 second granular. 5 device 1 idle timer resolution (idl_sel_dev1) ? r/w. selects the clock source for the device 1 (primary ide drive 1) idle timer. 0=8 second granular. 1=1 second granular. 4 device 0 idle timer resolution (idl_sel_dev0) ? r/w. selects the clock source for the device 0 (primary ide drive 0) idle timer. 0=8 second granular. 1=1 second granular. 3:0 idle timer count a (idl_cnta) ? r/w. specifies the initial and reload count of the device 0 ? 2 (primary ide drives 0 and 1, secondary ide drive 0) idle timers. 7.1.12. cntb ? count b (funct ion 3) address offset: 48 ? 4bh default value: 00h attribute: rea d/write this register contains the counts for fast burst timer, the cpu select and lock bits, the thermal duty cycle programming bits, the zz enable bits, the clock granularity selection for device 8, and the video status bit. bit description 31:25 reserved. read as 0. 24 video status (vid_sts) ? r/wc. 1=the pci bus utilization monitor has detected pci activity which exceeds its defined threshold (see description for device monitor 11). this bit is set by hardware and reset by writing a 1 to this bit position.
82371AB (piix4) e 122 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 23 reserved. read as 0. 22:18 bus master timer count (bm_cnt) ? r/w. specifies the initial and reload count of the device 8 (parallel port and pci bus master) idle timer. 17:16 reserved. read as 0. 15 device 8 idle timer resolution (idl_sel_dev8) ? r/w. selects the clock source for the device 8 (parallel port) idle timer. 0=1 second granular. 1=1 ms granular. 14 zz enable (zz_en) ? r/w. 1=enable piix4 assertion of the zz signal. 0=disable. when enabled, piix4 will assert zz signal under certain conditions when entering clock control mode. whether or not zz is asserted depends on: 1. time from stpclk# assertion to stop grant cycle. 2. frequency of any enabled stop break or burst events. 3. programmed throttle duty cycle if throttling enabled. note the l2 cache can not be snooped with zz signal asserted; therefore, must be disabled in level 2 power state such as stop grant. 13:11 thermal duty cycle (thrm_dty) ? r/w. this 3-bit field determines the duty cycle for the clock control thermal throttling mode (thrm# is asserted). the duty cycle indicates the percentage of time the stpclk# signal is asserted while in the thermal throttle mode. the field is decoded as follows: bits[13:11] mode bits[13:11] mode 000 reserved 100 50% 001 12.5% 101 62.5% 010 25% 110 75% 011 37.5% 111 87.5% note software must set this 3-bit field to a non-zero value for proper operation. 10:6 processor pll lock count (cpu_lck) ? r/w. specifies the initial count of fast burst timer when used to measure the processor pll lock time. the fast burst timer is loaded with the cpu_lck value and the appropriate clock source selected when the processor transitions from the stop clock or deep sleep state. 5 processor pll lock resolution (cpu_sel) ? r/w. selects the clock resolution used for the fast burst timer when it is used to count the processor?s pll lock time. 0=1 ms granular. 1=1 m s granular. 4:0 fast burst timer count (fb_cnt) ? r/w. specifies the initial and reload count of fast burst timer.
e 82371AB (piix4) 123 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.13. gpictl ? general purp ose input control (function 3) address offset: 4c ? 4fh default value: 00h attribute: read/write this register contains the enable bits, the polarity bits and edge selection bits for the general purpose io in device monitors 1 ? 13. bit description 31:28 reserved. 27 gpi edge select (gpi_edg_dev13) ? r/w. selects edge or level sensitivity of device monitor 13 gpi signal. 0=level. 1=edge. 26 gpi edge select (gpi_edg_dev12) ? r/w. selects edge or level sensitivity of device monitor 12 gp signal. 0=level. 1=edge. 25:13 gpi polarity select (gpi_pol_dev[1:13]) ? r/w. selects the assertion polarity for an enabled gpi signal for device monitors 1 ? 13. 0=asserted high. 1=asserted low. bit 25 corresponds to device monitor 13 and bit 13 corresponds to device monitor 1. 12:0 gpi enable (gpi_en_dev[1:13]) ? r/w. 1=enable the device monitor?s gpi signal into the trap and idle decode logic for devices [13:1]. 0=disable. bit 12 corresponds to device monitor 13 and bit 0 corresponds to device monitor 1. table 17 illustrates which gpi signals correspond with which device. table 17 . gpi to device monitor translation device monitoring optional gpi signal device monitoring optional gpi signal dev0 none dev7 gpi16 dev1 gpi5 dev8 gpi17 dev2 gpi6 dev9 gpi4 dev3 gpi0 dev10 gpi18 dev4 gpi13 dev11 gpi19 dev5 gpi14 dev12 gpi20 dev6 gpi15 dev13 gpi21 7.1.14. devresd ? device reso urce d (function 3) address offset: 50 ? 52h default value: 00h attribute: read/write this register contains the event enable bits for dma channels 0,1,3,5,6,7. it also contains the floppy disk controller monitor enable bit, serial port monitor enable bits, device 11 irq1 monitor enable bit, device 11 irq12 monitor enable bit and lpt dma select bits.
82371AB (piix4) e 124 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 23 reserved. 22:21 lpt dma select (lpt_dma_sel) ? r/w. selects the active dack signal used to reload the idle timer for device 8 (parallel port). enabled by res_en_dev8 bit. bits[22:21] dack signal 00 dack0 0 1 dack1 10 dack3 11 reserved 20 device 11 irq 12 enable (irq12_en_dev11) ? r/w. 1=enable an asserted irq12/m signal (mouse activity) to generate a device 11 (user interface) decode event. 0=disable. 19 device 11 irq1 enable (irq1_en_dev11) ? r/w. 1=enable an asserted irq1 signal (keyboard activity) to generate a device 11 (user interface) decode event. 0=disable. 18 lpt port enable (lpt_mon_en) ? r/w. 1=enable accesses to parallel port address range (lpt_dec_sel) to generate a device 8 (parallel port) decode event. 0=disable. 17 lpt dma monitor enable (res_en_dev8) ? r/w. 1=enable the selected dacks (lpt_dma_sel) to generate a device 8 (parallel port) decode event. 0=disable. 16 serial port b monitor enable (sb_mon_en) ? r/w. 1=enable accesses to serial port address range (comb_dec_sel) to generate a device 7 (serial port b) decode event. 0=disable. 15 reserved. 14 serial port a monitor enable (sa_mon_en) ? r/w. 1=enable accesses to serial port address range (coma_dec_sel) to generate a device 6 (serial port a) decode event. 0=disable. 13 reserved. 12 floppy disk controller monitor enable (fdc_mon_en) ? r/w. 1=enable accesses to floppy disk controller address range (fdc_dec_sel) to generate a device 5 (floppy controller) decode event. 0=disable. 11 fdc dma monitor enable (res_en_dev5) ? r/w. 1=enable dack2# to generate a device 5 (floppy controller) reload event. 0=disable. 10:6 reserved . 5 dack7 enable (dack7_en_dev4) ? r/w. 1=enable dack7# to generate a device 4 (audio controller) reload event. 0=disable. 4 dack6 enable (dack6_en_dev4) ? r/w. 1=enable dack6# to generate a device 4 (audio controller) reload event. 0=disable. 3 dack5 enable (dack5_en_dev4) ? r/w. 1=enable dack5# to generate a device 4 (audio controller) reload event. 0=disable. 2 dack3 enable (dack3_en_dev4) ? r/w. 1=enable dack4# to generate a device 4 (audio controller) reload event. 0=disable. 1 dack1 enable (dack1_en_dev4) ? r/w. 1=enable dack1# to generate a device 4 (audio controller) reload event. 0=disable. 0 dack0 enable (dack0_en_dev4) ? r/ w. 1=enable dack0# to generate a device 4 (audio controller) reload event. 0=disable.
e 82371AB (piix4) 125 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.15. devacta ? device acti vity a (function 3) address offset: 54 ? 57h default value: 00h attribute: read/write this register contains bits that enable device activity as global timer reload events or clock events (burst or break). bit description 31 device 5 reload select (brld_sel_dev5) ? r/w. selects which burst timer is reloaded upon an enabled device monitor 5 idle event. 0=reload the slow burst timer. 1=reload the fast burst timer. 30 device 3 reload select (brld_sel_dev3) ? r/w. selects which burst timer is reloaded upon an enabled device monitor 3 idle event. 0=reload the slow burst timer. 1=reload the fast burst timer. 29 device 2 reload select (brld_sel_dev2) ? r/w. selects which burst timer is reloaded upon an enabled device monitor 2 idle event. 0=reload the slow burst timer. 1=reload the fast burst timer. 28 device 1 reload select (brld_sel_dev1) ? r/w. selects which burst timer is reloaded upon an enabled device monitor 1 idle event. 0=reload the slow burst timer. 1=reload the fast burst timer. 27:14 burst timer reload enable (brld_en_dev[0 ? 13]) ? r/w. 1=enable reload events from the respective device monitor to reload the enabled burst timer or generate a stop break event. 0=disable. bit 27 corresponds to device monitor 13 and bit 14 corresponds to device monitor 0. 13:0 global timer reload enable bits (grld_en_dev[0 ? 13]) ? r/w. 1=enable reload events from the respective device monitor to reload the global standby timer. 0=disable. bit 13 corresponds to device monitor 13 and bit 0 corresponds to device monitor 0.
82371AB (piix4) e 126 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.16. devactb ? device acti vity b (function 3) address offset: 58 ? 5bh default value: 00h attribute: read/write this register contains the clock event and global timer reload enables for irqs, pci access, pme events, video. bit description 31:25 reserved. 25 apmc enable (apmc_en) ? r/w. 1=enable generation of smi# when apmc register is read and smi# is enabled. 0=disable. 24 video enable (video_en) ? r/w. 1=enable the video detect (pci bus utilization) logic to generate a timer reload event for device monitor 11. 0=disable. this logic detects pci bus utilization as set by the two fields: bus_util , and % bus_util . 23:16 percentage bus utilization threshold (%bus_util) ? r/w. this field controls the percentage of time that the minimum bus utilization threshold (represented by the bus_util field) must be maintained in order to generate a video event. the actual count is measured by the number of time slices that exceed bus_util within a 256 time slice window. 15:8 bus utilization threshold (bus_util) ? r/w. this field controls the threshold for bus utilization detection. if the video detect logic finds more pci data phases than specified by bus_util within a 256 clock period (time slice), then that time slice is counted. 7 reserved. 6 irq global reload enable (grld_en_irq) ? r/w. 1=enable an unmasked irq[1,3:7,9:15], nmi, or init to, when asserted, reload the global standby timer. 0=disable. 5 irq8# clock event enable (brld_en_irq8) ? r/w. 1=enable an unmasked irq8# to, when asserted, generate a fast burst timer reload or stop break event. 0=disable. 4 pme clock event enable (brld_en_pme) ? r/w. 1=enable an asserted smi#, gpi1#, pwrbtn#, or lid signal to generate a fast burst timer reload or stop break event. 0=disable. 3 undefined. must be written as a 0. 2 keyboard/mouse global reload enable (grld_en_kbc_ms) ? r/w. 1=enable an assertion of irq1 or irq12/m to reload the global standby timer. 0=disable. 1 irq clock event enable (brld_en_irq) ? r/w. 1=enable an unmasked irq[1,3:7,9:15], nmi, or init to generate a burst event or stop break event. 0=disable. 0 irq0 clock event enable (brld_en_irq0) ? r/w. 1=enable an unmasked irq0 to generate a burst event or stop break event. 0=disable.
e 82371AB (piix4) 127 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.17. devresa ? device reso urce a (function 3) address offset: 5c ? 5fh default value: 00h attribute: read/write bit description 31 device 8 eio enable (eio_en_dev8) ? r/w. 1=enable pci access to the device 8 enabled i/o ranges to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the lpt_mon_en must be set to enable the decode. 30 device 13 eio enable (eio_en_dev13) ? r/w. 1=enable pci accesses to the device 13 enabled memory and i/o ranges to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the mem_en_dev13 or io_en_dev13 must be set to enable the memory or io decodes respectively. 29 device 12 eio enable (eio_en_dev12) ? r/w. 1=enable pci accesses to the device 12 enabled memory and i/o ranges to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the mem_en_dev12 or io_en_dev12 must be set to enable the memory or io decodes respectively. 28 device 11 keyboard enable (kbc_en_dev11) ? r/w. 1=enable pci bus decode for accesses to keyboard controller i/o ports (60h and 64h). 0=disable. the eio enable bit, idle enable bit, or trap enable bit for this device must also be set in order to enable these respective functions. 27 graphics a/b segment memory enable (graph_ab _en) ? r/w . 1=enable pci bus decode for accesses to the pc compatible frame buffer ranges (a and b segments). 0=disable. piix4 does not positive decode these accesses for forwarding to the isa bus. 26 graphics i/o enable (graph_io_en) ? r/w. 1=enable pci bus decode for accesses to the vga i/o addresses (3b0h ? 3dfh). 0=disable. piix4 does not positive decode these accesses for forwarding to the isa bus. 25 soundblaster eio enable (sb_eio_en) ? r/w. 1=enable pci bus decode for accesses to the soundblaster device enabled decode ranges (bits[3,5:6]) to be claimed by piix4 and forwarded to the isa/eio bus. the sb_en bit must be set to enable their respective ranges. 0=disable. 24 linear frame buffer decode enable (lfb_dec_en) ? r/w. 1=enable pci bus decode for accesses to the generic memory range for linear frame buffer. 0=disable. the linear frame buffer address range is defined by the linear frame buffer base address and mask bits (bits[23:10]). piix4 does not positive decode these accesses for forwarding to the isa bus. 23:22 linear frame buffer mask (lfb_mask_dev11) ? r/w. this field defines a 2-bit mask for the linear frame buffer address, corresponding to ad[21:20]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e. ignored) when performing the decode. this field defines the size of the linear frame buffer window. note that programming these bits to ?10? results in a split address range. 21:10 linear frame buffer base address (lfb_base_dev11) ? r/w. this field defines the 12-bit memory base address range, corresponding to ad[31:20] for the linear frame buffer address. this field in conjunction with the lfb_mask_dev11 field defines a 1 - 8-mbyte linear frame buffer that can be enabled for monitoring using the device monitoring system 11.
82371AB (piix4) e 128 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 9:8 microsoft* sound system decode select (mss_sel) ? r/w. selects the microsoft sound system decode range enabled with bit 7. this field is decoded as follows: bits[9:8] mss decode 00 530h ? 537h 01 604h ? 60bh 10 e80h ? e87h 11 f40h ? f47h 7 microsoft sound system decode enable (mss_en) ? r/w. 1=enable pci bus decode for accesses to the i/o address range selected by the mss_sel field. 0=disable. the eio enable bit, idle enable bit, or trap enable bit for device 4 must also be set in order to enable those respective functions. 6:5 sound blaster decode select (sb_sel) ? r/w. selects the sound blaster decode range enabled with bit 3. this field is decoded as follows: bits[6:5] sound blaster decode 00 220 ? 22fh, 230 ? 233h 01 240 ? 24fh, 250 ? 253h 10 260 ? 26fh, 270 ? 273h 11 28 0 ? 28fh, 290 ? 293h 4 game port enable (game_en). 1=enable pci bus decode for accesses to the game port i/o address range (200 - 207h). 0=disable. the game port eio enable bit, or device 4 idle enable bit or trap enable must also be set to enable these respective functions. 3 sound blaster 8/16-bit decode enable (sb_en) ? r/w. 1=enable pci bus decode for accesses to the i/o address range selected by the sb_sel field and to the adlib (388 ? 38bh) address ranges. 0=disable. the soundblaster eio enable bit, or device 4 idle enable bit, or trap enable bit must also be set to enable these respective functions. 2:1 midi decode select (midi_sel) ? r/w. selects the midi decode range enabled with bit 1. this field is decoded as follows: bits[2:1] midi decode 00 300 ? 303h 01 310 ? 313h 10 320 ? 323h 11 330 ? 333h 0 midi enable (midi_en) ? r/w. 1=enable pci bus decode for accesses to the i/o address range selected by the midi_sel field. 0=disable. the eio enable bit, idle enable bit, or trap enable bit for device 4 must also be set in order to enable these respective functions.
e 82371AB (piix4) 129 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.18. devresb ? device reso urce b (function 3) address offset: 60 ? 63h default value: 00h attribute: read/write bit description 31 game port eio enable (game_eio_en) ? r/w. 1=enable pci bus decode for accesses to the game port enabled decode ranges to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the game_en bit must be set to enable this range. 30 keyboard eio enable (kbc_eio_en) ? r/w. 1=enable pci access to the keyboard controller enabled i/o ranges (60h and 64h) to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the kbc_en_dev11 bit must be set to enable the decode. 29 device 5 eio enable (eio_en_dev5) ? r/w. 1=enable pci access to the floppy disk controller enabled i/o ranges selected by fdc_dec_sel field to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the fdc_mon_en bit must be set to enable the decode. 28 floppy disk controller decode select (fdc_dec_sel) ? r/w. 1=secondary fdc address (370h ? 375h, 377h). 0=primary fdc address (3f0h ? 3f5h, 3f7h). this field selects the floppy disk controller i/o range enabled with bit 3. 27 reserved. 26:25 lpt controller decode select (lpt_dec_sel) ? r/w. selects the parallel port (device 8) i/o range enabled with the lpt_mon_en bit. this field is decoded as follows: bits[26:25] lpt decode 00 3bch ? 3bfh, 7bch ? 7beh 01 378h ? 37fh, 778h ? 77ah 10 278h ? 27fh, 678h ? 67ah 11 reserved 24 microsoft sound system eio enable (mss_eio_en) ? r/w. 1=enable pci bus decode for accesses to the microsoft sound system enabled decode ranges (devresa: bits[7:9]) to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the mss_en bit must be set to enable this range. 23 device 9 generic decode chip-select (cs_en_dev9) ? r/w. 1=enable assertion of the chip-select signal pcs0# for all accesses within the device 9 i/o decode range. 0=disable. the eio_en_dev9 bit must also be set to enable this function. 22 device 9 eio enable (eio_en_dev9) ? r/w. 1=enable pci access to the device 9 enabled i/o range or embedded controller io range to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the gdec_mon_dev9 bit or ec_en_dev9 bit must be set to enable the decode. 21 device 9 generic decode monitor enable (gdec_mon_dev9) ? r/w. 1=enable pci bus decode for accesses to the i/o address range selected by the base_dev9 and mask_dev9 fields. 0=disable. the eio enable bit, idle enable bit, or trap enable bit for device 4 must also be set in order to enable these respective functions. 20 midi eio enable (midi_eio_en) ? r/w. 1=enable pci bus decode for accesses to the midi enabled decode ranges (devresa: bits[0:2]) to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the midi_en bit must be set to enable this range. 19:16 device 9 generic decode mask (mask_dev9) ? r/w. specifies the 4-bit i/o base address mask used to determine the io address range size for device 9 accesses. mask_dev9 (bits[19:16]) correspond to ad[3:0]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e. ignored) when performing the decode. note that programming these bits to certain patterns (such as ?1001?) results in a split address range.
82371AB (piix4) e 130 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 15:0 device 9 generic decode base address (base_dev9) ? r/w. specifies the 16-bit i/o base address range (ad[15:0]) for the device 9 i/o range. when this field is combined with mask_dev9 field, an i/o range is defined starting from the base address register value to the size defined by the mask register. 7.1.19. devresc ? device resource c (function 3) address offset: 64 ? 67h default value: 00h attribute: read/write bit description 31 device 7 eio enable (eio_en_dev7) ? r/w. 1=enable pci access to the device 7 (serial port b) enabled i/o ranges selected by comb_dec_sel field to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the sb_mon_en bit must be set to enable the decode. 30:28 serial port b decode select (comb_dec_sel) ? r/w. selects the i/o range that the serial port b (device 7) decode responds to. this field is decoded as follows: bits[30:28] serial b decode bits[30:28] serial b decode 000 3f8h ? 3ffh (com1) 100 238h ? 23fh 001 2f8h ? 2ffh (com2) 101 2e8h ? 2efh (com4) 010 220h ? 227h 110 338h ? 33fh 011 228h ? 22fh 111 3e8h ? 3efh (com3) 27 device 6 eio enable (eio_en_dev6) ? r/w. 1=enable pci access to the device 6 (serial port a) enabled i/o ranges selected by coma_dec_sel field to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the sa_mon_en bit must be set to enable the decode. 26:24 serial port a decode select (coma_dec_sel) ? r/w. selects the i/o range that the serial port a (device 6) decode responds to. this field is decoded as follows: bits[26:24] serial a decode bits[26:24] serial a decode 000 3f8h ? 3ffh (com1) 100 238h ? 23fh 001 2f8h ? 2ffh (com2) 101 2e8h ? 2efh (com4) 010 220h ? 227h 110 338h ? 33fh 011 228h ? 22fh 111 3e8h ? 3efh (com3) 23 device 10 generic decode chip-select (cs_en_dev10) ? r/w. 1=enable assertion of the chip- select signal pcs1# for all accesses within the device 10 i/o decode range. 0=disable. the eio_en_dev10 bit must also be set to enable this function. 22 device 10 eio enable (eio_en_dev10) ? r/w. 1=enable pci access to the device 10 enabled i/o range to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. the gdec_mon_dev10 bit must be set to enable the decode. 21 device 10 generic decode monitor enable (gdec_mon_dev10) ? r/w. 1=enable pci bus decode for accesses to the i/o address range selected by the base_dev10 and mask_dev10 fields. 0=disable. the eio enable bit, idle enable bit, or trap enable bit for device 4 must also be set in order to enable these respective functions. 20 reserved.
e 82371AB (piix4) 131 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 19:16 device 10 generic decode mask (mask_dev10) ? r/w. specifies the 4-bit i/o base address mask used to determine the io address range size for device 10 accesses. mask_dev10 (bits[19:16]) correspond to ad[3:0]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e. ignored) when performing the decode. note that programming these bits to certain patterns (such as ?1001?) results in a split address range. 15:0 device 10 generic decode base address (base_dev10) ? r/w. specifies the 16-bit i/o base address range (ad[15:0]) for the device 10 i/o range. when this field is combined with mask_dev10 field, an i/o range is defined starting from the base address register value to the size defined by the mask register. 7.1.20. devrese ? device reso urce e (function 3) address offset: 68 ? 6ah default value: 00h attribute: read/write bit description 23:21 reserved. 20 device 12 i/o monitor enable (io_en_dev12) ? r/w. 1=enable pci bus decode for accesses to the i/o address range selected by the ibase_dev12 and imask_dev12 fields. 0=disable. the eio enable bit, or trap enable bit for device 12 must also be set in order to enable these respective functions. 19:16 device 12 i/o decode mask (imask_dev12) ? r/w. specifies the 4-bit i/o base address mask used to determine the io address range size for device 12 accesses. imask_dev12 (bits[19:16]) correspond to ad[3:0]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e. ignored) when performing the decode. note that programming these bits to certain patterns (such as ?1001?) results in a split address range. 15:0 device 12 i/o decode base address (ibase_dev12) ? r/w. specifies the 16-bit i/o base address range (ad[15:0]) for the device 12 i/o range. when this field is combined with imask_dev12 field, an i/o range is defined starting from the base address register value to the size defined by the mask register. 7.1.21. devresf ? device reso urce f (function 3) address offset: 6c ? 6fh default value: 00h attribute: read/write bit description 31:15 device 12 memory decode base address (mbase_dev12) ? r/w. specifies the 17-bit memory base address range (ad[31:15]) for the device 12 memory range. when this field is combined with the mmask_dev12 field, a memory range is defined from the base address value to the size defined by the mask register.
82371AB (piix4) e 132 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 14:8 reserved. 7 device 12 memory monitor enable (mem_en_dev12) ? r/w. 1=enable pci bus decode for accesses to the memory address range selected by the mbase_dev12 and mmask_dev12 fields. 0=disable. the eio enable bit, or trap enable bit for device 12 must also be set in order to enable these respective functions. 6:0 device 12 memory decode mask (mmask_dev12) ? r/w. specifies the 7-bit memory base address mask used to determine the memory address range size for device 12 accesses. mmask_dev12 (bits[6:0]) correspond to ad[21:15]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e. ignored) when performing the decode. note that programming these bits to certain patterns (such as ?1110011?) results in split address ranges. 7.1.22. devresg ? device reso urce g (function 3) address offset: 70 ? 72h default value: 00h attribute: read/write bit description 23:21 reserved. 20 device 13 i/o monitor enable (io_en_dev13) ? r/w. 1=enable pci bus decode for accesses to the i/o address range selected by the ibase_dev13 and imask_dev13 fields. 0=disable. the eio enable bit or trap enable bit for device 13 must also be set in order to enable these respective functions. 19:16 i/o decode mask (imask_dev13) ? r/w. specifies the 4-bit i/o base address mask used to determine the io address range size for device 13 accesses. imask_dev13 (bits[19:16]) correspond to ad[3:0]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e. ignored) when performing the decode. note that programming these bits to certain patterns (such as ?1001?) results in a split address range. 15:0 i/o decode base address (ibase_dev13) ? r/w. specifies the 16-bit i/o base address range (ad[15:0]) for the device 13 i/o range. when this field is combined with imask_dev13 field, an i/o range is defined starting from the base address register value to the size defined by the mask register.
e 82371AB (piix4) 133 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.23. devresh ? device reso urce h (function 3) address offset: 74 ? 77h default value: 00h attribute: read/write bit description 31:15 memory decode base address (mbase_dev13) ? r/w. specifies the 17-bit memory base address range (ad[31:15]) for the device 13 memory range. when this field is combined with the mmask_dev13 field, a memory range is defined from the base address value to the size defined by the mask register. 14:8 reserved. 7 device 13 memory monitor enable (mem_en_dev13) ? r/w. 1=enable pci bus decode for accesses to the memory address range selected by the mbase_dev13 and mmask_dev13 fields. 0=disable. the eio enable bit or trap enable bit for device 13 must also be set in order to enable these respective functions. 6:0 memory decode mask (mmask_dev13) ? r/w. specifies the 7-bit memory base address mask used to determine the memory address range size for device 13 accesses. mmask_dev13 (bits[6:0]) correspond to ad[21:15]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e. ignored) when performing the decode. note that programming these bits to certain patterns (such as ?1110011?) results in split address ranges. 7.1.24. devresi ? device reso urce i (function 3) address offset: 78 ? 7bh default value: 00h attribute: read/write bit description 31:21 reserved. 20 generic i/o decode 0 enable (io_en_gdec0) ? r/w. 1=enable accesses to the i/o address range selected by the io_mask_gdec0 and io_base_gdec0 fields to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. 19:16 generic decode 0 i/o mask (io_mask_gdec0) ? r/w. this field specifies the 4-bit i/o base address mask used to determine the io address range size. io_mask_gdec0(bits[19:16]) correspond to ad[3:0]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e., ignored) when performing the decode. note that programming these bits to certain patterns (such as 1001) results in a split address range. 15:0 generic decode 0 i/o base address (io_base_gdec0) ? r/w. specifies the 16-bit i/o base address range (ad[15:0]) for the generic decode range 0. when this field is combined with io_mask_gdec0 field, an i/o range is defined starting from the base address register value to the size defined by the mask register.
82371AB (piix4) e 134 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.25. devresj ? device reso urce j (function 3) address offset: 7c ? 7fh default value: 00h attribute: read/write bit description 31:21 reserved. 20 generic i/o decode 1 enable (io_en_gdec1) ? r/w. 1=enable accesses to the i/o address range selected by the io_mask_gdec1 and io_base_gdec1 fields to be claimed by piix4 and forwarded to the isa/eio bus. 0=disable. 19:16 generic decode 1 i/o mask (io_mask_gdec1) ? r/w. this field specifies the 4-bit i/o base address mask used to determine the io address range size. io_mask_gdec1(bits[19:16]) correspond to ad[3:0]. a ?1? in a bit position indicates that the corresponding address bit is masked (i.e., ignored) when performing the decode. note that programming these bits to certain patterns (such as 1001) results in a split address range. 15:0 generic decode 1 i/o base address (io_base_gdec1) ? r/w. this field specifies the 16-bit i/o base address range (ad[15:0]) for the generic decode range 1. when this field is combined with io_mask_gdec1 field, an i/o range is defined starting from the base address register value to the size defined by the mask register. 7.1.26. pmregmisc ? miscellan eous power management (function 3) address offset: 80h default value: 00h attribute: read/write this register contains miscellaneous functionality associated with the piix4 power management capabilities. bit description 7:1 reserved. 0 power management io space enable (pmiose) ? r/w. 1=enable. 0=disable. this bit controls the access to the power management i/o space registers whose base address is described in the power management base address register. if this bit is set, access to the power management io registers are enabled. the base address register for the i/o registers must be programmed before this bit is set. when disabled, all io accesses associated with power management base address are disabled. this bit functions independent of the state of function 3 io space enable (iose) bit (pcicmd register, bit 0).
e 82371AB (piix4) 135 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.27. smbba ? smbus base ad dress (function 3) address offset: 90 - 93h default value: 00000001h attribute: read/write this register contains the base address of the smbus i/o registers. bit description 31:16 reserved. hardwired to 0s. must be written as 0s. 15:4 index register base address. bits [15:4] correspond to i/o address signals ad [15:4], respectively. 3:1 reserved. read as 0. 0 resource type indicator (rte) ? ro. this bit is hardwired to 1 indicating that the base address field in this register maps to i/o space. 7.1.28. smbhstcfg ? smbus hos t configuration (function 3) address offset: d2h default value: 00h attribute: read/write bit description 7:4 reserved. 3:1 smbus interrupt select (smb_intrsel) ? r/w. selects the type of interrupt generated by the smbus controller. this field is decoded as follows: bits[3:1] smbus interrupt bits[3:1] smbus interrupt 000 smi# 100 irq9 001 reserved 101 reserved 010 reserved 110 reserved 011 re served 111 reserved 0 smbus controller host interface enable (smb_hst_en) ? r/w. 1=enable the smbus controller host interface. 0=disable. 7.1.29. smbslvc ? smbus slave command (function 3) address offset: d3h default value: 00h attribute: read/write bit description 7:0 smbus host slave command (smbcmd) ? r/w. specifies the command values to be matched for smbus master accesses to the smbus controller host slave interface (smbus port 10h).
82371AB (piix4) e 136 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.1.30. smbshdw1 ? smbus slav e shadow port 1 (function 3) address offset: d4h default value: 00h attribute: read/write bit description 7:1 smbus slave address for shadow port 1 (slvport1) ? r/w. specifies the address used to match against incoming smbus addresses for shadow port 1. 0 read/write for shadow port 1 (slvport1rw) ? r/w. this bit must be programmed to 0 since piix4 smbus slave controller only responds to word write transactions. 7.1.31. smbshdw2 ? smbus slav e shadow port 2 (function 3) address offset: d5h default value: 00h attribute: rea d/write bit description 7:1 smbus slave address for shadow port 2 (slvport2) ? r/w. specifies the address used to match against incoming smbus addresses for shadow port 2. 0 read/write for shadow port 2 (slvport2rw) ? r/w. this bit must be programmed to 0 since piix4 smbus slave controller only responds to word write transactions. 7.1.32. smbrev ? smbus revisi on identification (function 3) address offset: d6h default value: 00h attribute: read only bit description 7:0 revision id (revid) ? ro. this register returns the current revision id for the smbus host/slave controller.
e 82371AB (piix4) 137 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2. power management io space registers the ? base ? address is programmed in the piix4 pci configuration space for function 3, offset 40h ? 43h. 7.2.1. pmsts ? power managem ent status register (io) i/o address: base + (00h) default value: 00h attribute: read/write bit description 15 resume status (rsm_sts) ? r/wc. 1=an enabled resume event has occurred. 0=an enabled resume event has not occurred. piix4 sets this bit to 1 upon detection of the resume event and then transitions the system to the on state. this bit can only be set by hardware and can only be cleared by writing a 1 to this bit position. 14:12 reserved. 11 power button override status (pwrbtnor_sts) ? r/wc. 1=power button override has been signaled. 0=power button override has not been signaled. this bit is set when power button override has been enabled and the pwrbtn# signal has been continuously asserted for greater than 4 seconds. piix4 automatically transitions the system into the soft off state and clears the pwrbtn_sts bit. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 10 rtc status (rtc_sts) ? r/wc. 1=rtc alarm has been signaled. 0=rtc alarm has not been signaled. this bit is set when the internal rtc asserts its irq8 signal. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 9 reserved. 8 power button status (pwrbtn_sts) ? r/wc. 1=pwrbtn# signal has been asserted. 0=pwrbtn# signal has not been asserted. there is a 16 ms delay from external signal assertion to the setting of this bit due to internal switch debounce circuitry. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. if the pwrbtn# signal is held low for more than 4 seconds, then this bit is cleared and the pwrbtnor_sts bit is set. 7:6 reserved. 5 global status (gbl_sts) ? r/wc. 1=sci has been generated due a write of 1 to the bios_rls bit. 0=no sci has been generated due to write to bios_rls bit. the glb_en bit must be set to enable the sci generation. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 4 bus master status (bm_sts) ? r/wc. 1=pcireq[0:3] or phold# has been asserted (pci bus master request). 0=no bus master request. this bit is set when pcireq[0:3] or phold# is asserted and can only be cleared by writing a 1 to this bit position. 3:1 reserved. 0 timer overflow status (tmrof_sts) ? r/wc. 1=bit 23 of the 24-bit power management timer has toggled. 0=bit has not toggled. when the tmrof_en is set then the setting of the tmrof_sts bit will additionally generate an sci. this bit is only set by hardware and can only be reset by writing a 1 to this bit position.
82371AB (piix4) e 138 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.2. pmen ? power manageme nt resume enable register (io) i/o address: base + (02h) default value: 00h attribute: read/write bit description 15:11 reserved. 10 rtc enable (rtc_en) ? r/w. 1=enable the generation of a resume event upon setting of the rtc_sts bit. 0=disable. 9 reserved. 8 power button enable (pwrbtn_en) ? r/w. 1=enable the generation of an smi# or sci on setting the sts bit. 0=disable. the pwrbtn# signal is always enabled to generate resume events. 7:6 reserved. 5 global enable (gbl_en) ? r/w. 1=enable sci generation upon setting of the gbl_sts bit. 0=disable. 4:1 reserved. 0 power management timer (tmrof_en) ? r/w. 1=enable sci generation upon setting of the tmrof_sts bit. 0=disable. 7.2.3. pmcntrl ? power manag ement control register (io) i/o address: base + (04h) default value: 0000h attribute: read/write bit description 15:14 reserved. 13 suspend enable (sus_en) ? r/w. this is a write-only bit and reads to it always return a 0. writing this bit to a 1 causes the system to automatically sequence into the suspend state defined by the sus_typ field. this bit corresponds to the slp_en bit in acpi specification. 12:10 suspend type (sus_typ) ? r/w. specifies the type of hardware suspend mode the system should enter when the sus_en bit is set. this field is decoded as follows: bits[12:10] suspend type 000 soff/std (soft off or suspend to disk) 001 str (suspend to ram) 010 poscl (powered on suspend, context lost) 011 posccl (powered on suspend, cpu context lost) 100 pos (powered on suspend, context maintained) 101 working (clock control) 110 reserved 111 reserved the sus_typ field may also be used by the bios and os code to determine the type of suspend state the system is resuming from. before entering any low power clock control state (lvl2 or lvl3), this field should be programmed to the working state (101). this does not cause any action by piix4, but is for information storage only.
e 82371AB (piix4) 139 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 9:3 reserved . 2 global release (gbl_rls) ? r/w. 1=a 1 written to this bit position will cause an smi# to be generated and bios_sts bit set if enabled by the bios_en bit. 0=no smi# generated. this bit is used by the acpi software to raise an event to the bios software. 1 bus master reload enable (brld_en_bm) ? r/w. 1=enable the generation of a burst or stop break event upon setting of the bm_sts bit. 0=disable. 0 sci enable (sci_en) ? r/w. 1=enable generation of sci upon assertion of pwrbtn_sts, lid_sts, thrm_sts, or gpi_sts bits. 0=disable. 7.2.4. pmtmr ? power managem ent timer register (io) i/o address: base + (08h) default value: 00h attribute: read only bit description 23:0 timer value (tmr_val) ? ro. this field returns the running count of the power management timer. this is a 24-bit counter that runs off a 3.579545-mhz clock. the timer is reset to an initial value of 0 during a pci reset, and then continues counting unless the 14.31818-mhz osc input to the chip is stopped. if the clock is restarted without a pci reset, then the counter will continue counting from where it stopped. when bit 23 of the timer transitions from high-to-low or low-to-high, the tmrof_sts bit is set. if the tmrof_en bit is set an sci interrupt is also generated. 7.2.5. gpsts ? general purpo se status register (io) i/o address: base + (0ch) default value: 00h attribute: read/write bit description 15:12 reserved. 11 lid status (lid_sts) ? r/wc. 1=lid signal has been asserted. 0=lid signal has not been asserted. assertion level is dependent upon polarity enable bit lid_pol value. if the lid_en bit is set then the setting of the lid_sts bit will generate an sci, smi# or resume event. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 10 ring status (ri_sts) ? r/wc. 1=ring indicate ri# signal has been asserted. 0=ri# has not been asserted. if the ri_en bit is set, the setting of the ri_sts bit generates a resume event. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 9 gpi status (gpi_sts) ? r/wc. 1=gpi1# signal has been asserted. 0=gpi1# has not been asserted. if the gpi_en bit is set then the setting of the gpi_sts bit will generate an sci, smi# or resume event. this bit is only set by hardware and can only be reset by writing a 1 to this bit position.
82371AB (piix4) e 140 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 8 usb status (usb_sts) ? r/ wc. 1=usb interface has indicated that a usb resume has been driven onto one of the two usb ports while in power on suspend. 0=no usb resume has been detected. if the usb_en bit is set the setting of the usb_sts bit will generate a resume event. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 7 thermal override status (thrmor_sts) ? r/wc. 1=thrm# signal has been asserted low and thermal clock throttling has been initiated. 0=thermal clock throttling has not been initiated. this bit is set anytime the thermal state machine generates a thermal override condition and starts throttling the cpu?s clock at the thrm_dty ratio. this bit is set by hardware and can only be cleared by writing a 1 to this bit position. 6:1 reserved. 0 thermal status (thrm_sts) ? r/wc. 1=thrm# signal has been asserted. 0=thrm# signal has not been asserted. assertion level is dependent upon polarity enable bit thrm_pol. if the thrm_en bit is set then the setting of the thrm_sts bit will generate an sci or smi. this bit is only set through hardware and is cleared by writing a 1 to this bit position. 7.2.6. gpen ? general purpos e enable register (io) i/o address: base + (0eh) default value: 00h attribute: read/write bit description 15:12 reserved. 11 lid enable (lid_en) ? r/w. 1=enable the generation of an smi#, sci, or resume event upon the setting of the lid_sts bit. 0=disable. 10 ring enable (ri_en) ? r/w. 1=enable the generation of a resume event upon the setting of the ri_sts bit. 0=disable. 9 gpi enable (gpi_en) ? r/w. 1=enable the generation of an smi#, sci, or resume event upon the setting of the gpi_sts bit. 0=disable. 8 usb enable (usb_en) ? r/w. 1=enable the generation of a resume event upon the setting of the usb_sts bit. 0=disable. 7:1 reserved. 0 thermal enable (thrm_en) ? r/w. 1=enable the generation of an smi# or sci upon the setting of the thrm_sts bit. 0=disable.
e 82371AB (piix4) 141 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.7. pcntrl ? processor co ntrol register (io) i/o address: base + (10h) default value: 00h attribute: read /write bit description 31:18 reserved. 17 clock control status (cc_sts) ? ro. 1=piix4 clock control active. 0=piix4 clock control inactive. 16:14 reserved. 13 clock run enable (clkrun_en) ? r/w. 1=enable pci clock run (clkrun#) protocol. 0=disable. when enabled, piix4 requests to stop the pci clock when the pci bus has been idle for 26 pci clocks. 12 stop clock enable (stpclk_en) ? r/w. 1=enable stopping of host clock when placed into a lvl3 clock control condition. 0=disable. 11 sleep enable (sleep_en) ? r/w. 1=enable assertion of slp# signal when placed into lvl3 clock control condition. 0=disable. this enables sleep or deep sleep clock control for pentium ii processor. 10 burst enable (bst_en) ? r/w. 1=enable clock control bursting which causes enabled system events to become burst events and reload the burst timers. 0=disable clock control bursting which causes enabled system events to become stop break events and restore the system to normal full- speed clocked operation. 9 clock control enable (cc_en) ? r/w. 1=enable clock control. 0=disable. this enables reads to the lvl2 and lvl3 registers to cause piix4 to enter the enabled clock mode. 8 reserved. 7:5 reserved. 4 throttle enable (tht_en) ? r/w. 1=enable system throttle clock control. 0=disable. 3:1 throttle duty programming bits (thtl_dty) ? r/w. selects the duty cycle of the stpclk# signal when the system is in the system throttling mode. the duty cycle indicates the percentage of time the stpclk# signal is asserted while in the throttle mode. the field is decoded as follows: bits[2:0] mode bits[2:0] mode 000 reserved 100 50% 001 12.5% 101 62.5% 010 25% 110 75% 011 37.5% 111 87.5% 0 reserved.
82371AB (piix4) e 142 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.8. plvl2 ? processor lev el 2 register (io) i/o address: base + (14h) default value: 00h attribute: read/write (byte readable only) bit description 7:0 level 2 power state entry (lvl2) ? r/w. reads to this register cause piix4 to transition into a stop grant or quick start power state (lvl2) and return a value of 00h. writes to this register have no effect. 7.2.9. plvl3 ? processor lev el 3 register (io) i/o address: base + (15h) default value: 00h attribute: read/write (byte readable only) bit description 7:0 level 3 power state entry (lvl3) ? r/w. reads to this register cause piix4 to transition into a stop clock, sleep, or deep sleep power state (lvl3) and return a value of 00h. writes to this register have no effect.
e 82371AB (piix4) 143 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.10. glbsts ? global statu s register (io) i/o address: base + (18h) default value: 00h attribute: read/w rite bit description 15:12 reserved. 11 irq resume status (irq_rsm_sts) ? r/w. 1=system was resumed from a powered on suspend (pos) state due to an interrupt assertion (irq[1,3:15]). 0=system was not resumed due to irq. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 10 external smi status (extsmi_sts) ? r/wc. 1=extsmi# signal was asserted. 0=extsmi# was not asserted. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 9 reserved. 8 global standby status (gstby_sts) ? r/wc. 1=global standby timer expired (counted down to 0). 0=global standby timer did not expire. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 7 gp status (gp_sts) ? ro. 1=indicates that one of the status bits in the gpsts register is set. 0=all bits in gpsts register are reset. this bit can only be reset by resetting all bits in the gpsts register. 6 pm1 status (pm1_sts) ? ro. 1=indicates that one of the status bits in the pmsts register is set. 0=all bits in pmsts register are reset. this bit can only be reset by resetting all bits in the pmsts register. 5 apm status (apm_sts) ? r/wc. 1=a write occurred to the apmc register causing generation of an smi#. 0=a write has not occurred to the apmc register causing generation of an smi#. this bit is cleared by writing a 1 to this bit position. 4 all devices status (dev_sts) ? ro. 1=indicates that one of the status bits in the dev_sts register is set. 0=all bits in dev_sts register are reset. this bit can only be reset by resetting all bits in the dev_sts register. 3 reserved. 2 p4ma status (p4ma_sts) ? r/wc. 1=an smi# was generated due to a piix4 pci cycle being master aborted. 0=no smi# was generated due to piix4 pci cycles having been master aborted. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 1 legacy usb status (legacy_usb_sts) ? r/wc. 1=usb legacy keyboard logic generated an smi#. 0=usb legacy keyboard logic did not generate an smi#. this bit is only set by hardware and can only be reset clearing the children status bits in the usb status register. 0 bios status (bios_sts) ? r/wc. 1=a write of 1 occurred to the gbl_rls bit. 0=a write of 1 did not occur to the gbl_rls bit. this bit is set by hardware and is cleared by writing a 1 to it.
82371AB (piix4) e 144 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.11. devsts ? device statu s register (io) i/o address: base + (1ch) default value: 00h attribute: read/write bit description 31:30 reserved. 29:16 device [0 ? 13] trap status bits ( trp_sts_dev[0 ? 13]) ? r/wc. 1=an smi# was generated by an i/o trap to the associated device monitor?s enabled address range. 0=no smi# was generated. bit 29 corresponds to device monitor 13 and bit 16 corresponds to device monitor 0. this bit is cleared by writing a 1 to its bit position. 15:12 reserved. 11:0 device [0 ? 11] idle status bits (idl_sts_dev[0 ? 11]) ? r/wc. 1=an smi# was generated by the expiration of the associated device monitor?s idle timer. 0=no smi# was generated. bit 11 corresponds to device monitor 11 and bit 0 corresponds to device monitor 0. this bit is cleared by writing a 1 to its bit position. 7.2.12. glben ? global enable register (io) i/o address: base + (20h) default value: 00h attribute: read/write bit description 15 battery low enable (batlow_en) ? r/w. 1=enable batlow# assertion to prevent a system resume from any suspend state. 0=disable. 14:12 reserved. 11 irq resume enable (irq_rsm_en) ? r/w. 1=enable an unmasked interrupt (irq[1, 3:15]) assertion to generate a resume from the power on suspend (pos) state. 0=disable. 10 external smi enable (extsmi_en) ? r/w. 1=enable the setting of the extsmi_sts bit to generate an smi# or resume event. 0=disable. 9 reserved. 8 global stand by enable (gstby_en) ? r/w. 1=enable the setting of the gstby_sts bit to generate an smi# or resume event. 0=disable. 7:5 reserved. 4 piix4 master abort enable (p4ma_en) ? r/w. 1=enable the setting of the p4ma_sts bit to generate an smi#. 0=disable. 3 bus master trap enable (bm_trp_en) ? r/w. 1=enable the setting of the bm_sts bit to generate an smi#. 2 reserved. 1 bios enable (bios_en) ? r/w. 1=enable the generation of an smi# by writing a 1 to the gbl_rls bit. 0=disable. 0 legacy usb enable (legacy_usb_en) ? r/w. 1=enable the usb legacy function to generate an smi#. 0=disable.
e 82371AB (piix4) 145 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.13. glbctl ? global contr ol register (io) i/o address: base + (28h) default value: 00h attribute: read/write bit description 31:27 reserved. 26 global standby timer clocking select b (gstby_selb) ? r/w. this bit in conjunction with bit 8 selects the clock source for the global standby timer. see bit 8 description for timing programming combinations. 25 lid polarity (lid_pol) ? r/w. 1=active low lid assertion sets the lid_sts bit. 0=active high lid assertion sets the lid_sts bit. 24 system management freeze (sm_freeze) ? r/w. 1=disable all device monitor idle timers and the global standby timer from counting. 0=enable timers to count. 23:17 reserved. 16 end of smi (eos) ? r/w. 1=enable piix4 to assert an smi#. 0=disable. this bit is cleared automatically upon generation of an smi#. 15:9 global standby timer initial count (gstby_cnt) ? r/w. specifies the initial and reload count of the global standby timer. 8 global standby timer clocking select a (gstby_sela) ? r/w. this bit in conjunction with bit 26 selects the clock source for the global standby timer. bits[26,8] clock rate 0,0 32 seconds (default) 0,1 4 minutes 1,0 4 milliseconds 1,1 4 seconds 7:3 reserved. 2 thermal polarity (thrm_pol) ? r/w. 1=active low thrm# assertion sets the thrm_sts bit. 0=active high thrm# assertion sets the thrm_sts bit. 1 bios release (bios_rls) ? r/w. 1=a 1 written to this bit position causes an sci to be generated and gbl_sts bit set, if enabled by the gbl_en bit. 0=no sci generated. this bit is used by the bios software to raise an event to the acpi software. this bit always reads a 0. 0 smi enable (smi_en) ? r/w. 1=enable the generation of smi# upon any enabled smi# event. 0=disable. this bit is reset by a pci reset event.
82371AB (piix4) e 146 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.14. devctl ? device contr ol register (io) i/o address: base + (2ch) default value: 00h attribute: read/write bit description 31:28 reserved. 27 device 8 bus master reload enable (bm_rld_dev8) ? r/w. 1=enable any pci bus master request (phold#, pcireqa[0:3]) to reload the device monitor idle timer. 0=disable. 26 device 3 idle reload enable (idl_rld_en_dev3) ? r/w. 1=enable the device monitor 3 idle reload events to reload the device monitor 3 idle timer. 0=disable. when device 3 is being used as a software smi timer, this bit should be cleared to prevent any events from reloading the timer. 25 device 13 trap enable (trp_en_dev13) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 13 enabled trap decode ranges. 0=disable. 24 device 12 trap enable (trp_en_dev12) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 12 enabled trap decode ranges. 0=disable. 23 device 11 trap enable (trp_en_dev11) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 11 enabled trap decode ranges. 0=disable. 22 device 11 idle enable (idl_en_dev11) ? r/w. 1=enable the device monitor 11 idle reload events to reload the device monitor 11 idle timer. 0=disable. 21 device 10 trap enable (trp_en_dev10) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 10 enabled trap decode ranges. 0=disable. 20 device 10 idle enable (idl_en_dev10) ? r/w. 1=enable the device monitor 10 idle reload events to reload the device monitor 10 idle timer. 0=disable. 19 device 9 trap enable (trp_en_dev9) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 9 enabled trap decode ranges. 0=disable. 18 device 9 idle enable (idl_en_dev9) ? r/w. 1=enable the device monitor 9 idle reload events to reload the device monitor 9 idle timer. 0=disable. 17 device 8 trap enable (trp_en_dev8) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 8 enabled trap decode ranges. 0=disable. 16 device 8 idle enable (idl_en_dev8) ? r/w. 1=enable the device monitor 8 idle reload events to reload the device monitor 8 idle timer. 0=disable. 15 device 7 trap enable (trp_en_dev7) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 7 enabled trap decode ranges. 0=disable. 14 device 7 idle enable (idl_en_dev7) ? r/w. 1=enable the device monitor 7 idle reload events to reload the device monitor 7 idle timer. 0=disable. 13 device 6 trap enable (trp_en_dev6) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 6 enabled trap decode ranges. 0=disable. 12 device 6 idle enable (idl_en_dev6) ? r/w. 1=enable the device monitor 6 idle reload events to reload the device monitor 6 idle timer. 0=disable. 11 device 5 trap enable (trp_en_dev5) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 5 enabled trap decode ranges. 0=disable.
e 82371AB (piix4) 147 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 10 device 5 idle enable (idl_en_dev5) ? r/w. 1=enable the device monitor 5 idle reload events to reload the device monitor 5 idle timer. 0=disable. 9 device 4 trap enable (trp_en_dev4) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 4 enabled trap decode ranges. 0=disable. 8 device 4 idle enable (idl_en dev4) ? r/w. 1=enable the device monitor 4 idle reload events to reload the device monitor 4 idle timer. 0=disable. 7 device 3 trap enable (trp_en_dev3) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 3 enabled trap decode ranges. 0=disable. 6 device 3 idle enable (idl_en_dev3) ? r/w. 1=enable the device monitor 3 idle reload events to reload the device monitor 3 idle timer. 0=disable. 5 device 2 trap enable (trp_en_dev2) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 2 enabled trap decode ranges. 0=disable. 4 device 2 idle enable (idl_en_dev2) ? r/w. 1=enable the device monitor 2 idle reload events to reload the device monitor 2 idle timer. 0=disable. 3 device 1 trap enable (trp_en_dev1) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 1 enabled trap decode ranges. 0=disable. 2 device 1 idle enable (idl_en_dev1) ? r/w. 1=enable the device monitor 1 idle reload events to reload the device monitor 1 idle timer. 0=disable. 1 device 0 trap enable (trp_en_dev0) ? r/w. 1=enable generation of a trap smi for accesses to the device monitor 0 enabled trap decode ranges. 0=disable. 0 device 0 idle enable (idl_en_dev0) ? r/w. 1=enable the device monitor 0 idle reload events to reload the device monitor 0 idle timer. 0=disable. 7.2.15. gpireg ? general purp ose input register (io) i/o address: base + (30h, 31h, 32h) default value: xxh attribute: read only (byte reads only) bit description 23:22 reserved. 21:0 general purpose input (gpi) ? ro. each bit directly represents the logical value on the pin. some of the gpi signals can be configured as another input signal. the value in this register of a bit which is not configured as a gpi is indeterminate and may change randomly.
82371AB (piix4) e 148 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.2.16. gporeg ? general purp ose output register (io) i/o address: base + (34h, 35h, 36h, 37h) default value: 7f ffbfffh attribute: read/write (byte accesses only) bit description 31 reserved. 30:0 general purpose output (gpo) ? r/w. each bit directly represents the logical value output onto the pin. reads to this register return the last value written. some gpo signals can be configured as another output signal. in that case, the output pin will not reflect the state of the corresponding gpo bit in this register. some of the output signals default to another signal. 7.3. smbus io space registers the ? b ase ? address is programmed in the piix4 pci configuration space for function 3 (offset 90h ? 93h). 7.3.1. smbhststs ? smbus hos t status register (io) i/o address: base + (00h) default value: 00h attribute: read/write this register provides status information concerning the smbus controller host interface. bit description 7:5 reserved. 4 failed (failed) ? r/wc. 1=indicates that the source of smbus interrupt was a failed bus transaction, set when kill bit is set (smbhstcnt register). 0=smbus interrupt not caused by kill bit. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 3 bus collision (bus_err) ? r/wc. 1=indicates that the source of smbus interrupt was a transaction collision. 0=smbus interrupt not caused by transaction collision. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 2 device error (dev_err) ? r/wc. 1=indicates that the source of smbus interrupt was the generation of an smbus transaction error. 0=smbus interrupt not caused by transaction error. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. transaction errors are caused by: illegal command field unclaimed cycle (host initiated) host device time-out 1 smbus interrupt (inter) ? r/wc. 1=indicates that the source of smbus interrupt was the completion of the last host command. 0=smbus interrupt not caused by host command completion. this bit is only set by hardware and can only be reset by writing a 1 to this bit position.
e 82371AB (piix4) 149 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary bit description 0 host busy ( host_busy ) ? ro. 1=indicates that the smbus controller host interface is in the process of completing a command. 0=smbus controller host interface is not processing a command. none of the other registers should be accessed if this bit is set. 7.3.2. smbslvsts ? smbus sla ve status register (io) i/o address: base + (01h) default value: 00h attribute: read/write this register provides status information concerning the smbus controller slave interface. bit description 7:6 reserved. 5 alert status (alert_sts) ? r/wc. 1=indicates that the source of smbus interrupt or resume event was the assertion of the smbalert# signal. 0=smbus interrupt not caused by smbalert# signal. setting of this bit requires that the alert_en bit be set. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 4 shadow2 status (shdw2_sts) ? r/wc. 1=indicates that the source of smbus interrupt or resume event was a slave cycle address match of the smbshdw2 port. 0=smbus interrupt not caused by address match to smbshdw2 port. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 3 shadow1 status (shdw1_sts) ? r/wc. 1=indicates that the source of smbus interrupt or resume event was a slave cycle address match of the smbshdw1 port. 0=smbus interrupt not caused by address match to smbshdw1 port. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 2 slave status (slv_sts) ? r/wc. 1=indicates that the source of smbus interrupt or resume event was a slave cycle event match of the smbslvc (command match) and smbslvevt (data event match). 0=smbus interrupt not caused by slave event match. this bit is only set by hardware and can only be reset by writing a 1 to this bit position. 1 reserved. 0 slave busy (slv_bsy) ? ro. 1=indicates that the smbus controller slave interface is in the process of receiving data. 0=smbus controller slave interface is not processing data. none of the other registers should be accessed if this bit is set.
82371AB (piix4) e 150 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.3.3. smbhstcnt ? smbus hos t control register (io) i/o address: base + (02h) default value: 00h attribute: read/write the control register is used to enable smbus controller host interface functions. reads to this register clears the host interface?s index pointer to the block data storage array. bit description 7 reserved. 6 start (start) ? r/w. 1=start execution. writing a 1 to this bit initiates the smbus controller host interface to execute the command programmed in the smb_cmd_port field. all necessary registers should be setup prior to writing a 1 to this bit position. 0=writing a 0 has no effect. this bit always reads 0. the host_busy bit can be used to identify when the smbus host controller has finished executing the command. 5 reserved. 4:2 smbus command protocol (smb_cmd_prot) ? r/w. selects the type of command the smbus controller host interface will execute. reads or writes are determined by bit 0 of smbhstadd register. this field is decoded as follows: bits[4:2] protoco l bits[4:2] protocol 000 quick read or write 100 reserved 001 byte read or write 101 block read or write 010 byte data read or write 110 reserved 011 word data read or write 111 reserved 1 kill (kill) ? r/w. 1=stop the current in process smbus controller host transaction. this sets the failed status bit and asserts the interrupt selected by the smb_intrsel field. 0=allows the smbus controller host interface to function normally. 0 interrupt enable (interen) ? r/w. 1=enable the generation of interrupts (irq9out) on the completion of the current host transaction. 0=disable. 7.3.4. smbhstcmd ? smbus hos t command register (io) i/o address: base + (03h) default value: 00h attribute: read/write this register is transmitted by the smbus controller host interface in the command field of the smbus protocol. bit description 7:0 smbus host command (hst_cmd) ? r/w . this field contains the data transmitted in the command field of smbus host transaction.
e 82371AB (piix4) 151 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.3.5. smbhstadd ? smbus hos t address register (io) i/o address: base + (04h) default value: 00h attribute: read/write this register is transmitted by the smbus controller host interface in the slave address field of the smbus protocol. bit description 7:1 smbus address (smb_address) ? r/w. this field contains the 7-bit address of the targeted slave device. 0 smbus read or write (smb_rw) ? r/w. 1=execute a read command. 0=execute a write command. 7.3.6. smbhstdat0 ? smbus ho st data 0 register (io) i/o address: base + (05h) default value: 00h attribute: read/write this register is transmitted by the smbus controller host interface in the data 0 field of the smbus protocol. on reads, data 0 bytes are stored here. bit description 7:0 smbus data 0 (smbd0) ? r/w. this register should be programmed with the value to be transmitted in the data 0 field of an smbus host interface transaction. for a block write command, the count of the memory block should be stored in this field. the value of this register is loaded into the block transfer count field. this register must be programmed to a value between 1 and 32 for block command counts. a count of 0 or a count above 32 will result in unpredictable behavior. for block reads, the count received from the smbus device is stored here. 7.3.7. smbhstdat1 ? smbus ho st data 1 register (io) i/o address: base + (06h) default value: 00h attribute: read/write this register is transmitted by the smbus controller host interface in the data 1 field of the smbus protocol. on reads, data 1 bytes are stored here. bit description 7:0 smbus data 1 (smbd1) ? r/w. this register should be programmed with the value to be transmitted in the data 1 field of an smbus host interface transaction.
82371AB (piix4) e 152 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.3.8. smbblkdat ? smbus blo ck data register (io) i/o address: base + (07h) default value: 00h attribute: read/write reads and writes to this register are used to access the 32-byte block data storage array. an internal index pointer is used to address the array. it is reset to 0 by reading the smbhstcnt register. the index pointer then increments automatically upon each access to this register. the transfer of block data into (read) or out of (write) this storage array during an smbus transaction always starts at index address 0. bit description 7:0 smbus block data (blk_dat) ? r/w. this register is used to transfer data into or out of the block data storage array. 7.3.9. smbslvcnt ? smbus sla ve control register (io) i/o address: base + (08h) default value: 00h attribute: read/write the control register is used to enable smbus controller slave interface functions. bit description 7:4 reserved. 3 smbus alert enable (alert_en) ? r/w. 1=enable the generation of an interrupt or resume event on the assertion of smbalert# signal. 0=disable. 2 smbus shadow port 2 enable (shdw2_en) ? r/w. 1=enable the generation of an interrupt or resume event upon an external smbus master generating a transaction with an address that matches the smbshdw2 register. 0=disable. 1 smbus shadow port 1 enable (shdw1_en) ? r/w. 1=enable the generation of an interrupt or resume event upon an external smbus master generating a transaction with an address that matches the smbshdw1 register. 0=disable. 0 slave enable (slv_en) ? r/w. 1=enable the generation of an interrupt or resume event upon an external smbus master generating a transaction with an address that matches the host controller slave port of 10h, a command field which matches the smbslvc register, and a match of one of the corresponding enabled events in the smbslvevt register. 0=disable.
e 82371AB (piix4) 153 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 7.3.10. smbshdwcmd ? smbus sh adow command register (io) i/o address: base + (09h) default value: 00h attribute: read only this register is used to store command values for external smbus master accesses to the host slave and slave shadow ports. bit description 7:0 shadow command (shdw_cmd) ? ro. this field contains the command value which was received during an external smbus master access whose address field matched the host slave address (10h) or one of the slave shadow port addresses. 7.3.11. s mbslvevt ? smbus slave event register (io) i/o address: base + (0ah) default value: 0000h attribute: read/write this register is used to enable generation of interrupt or resume events for accesses to the host controller?s slave port. bit description 15:0 smbus slave event (smb_slv_evt) ? r/w. this field contains data bits used to compare against incoming data to the smbslvdat register. when a bit in this register is a 1 and the corresponding bit in the smbslvdat register is set, then an interrupt or resume event will be generated if the command value matches the value in the smbslvc register and the access was to smbus host address 10h. 7.3.12. smbslvdat ? smbus sla ve data register (io) i/o address: base + (0ch) default value: 0000h attribute: read only this register is used to store data values for external smbus master accesses to the shadow ports or the smbus host controller?s slave port. bit description 15:0 slave data (smb_slv_data) ? ro. this field contains the data value which was transmitted during an external smbus master access whose address field matched one of the slave shadow port addresses or the smbus host controller slave port address of 10h.
82371AB (piix4) e 154 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8. 0. pci/isa bridge functional description this section describes each of the major functions on the piix4 pci-to-isa bridge including the memory and i/o address map, dma controller, interrupt controller, timer/counter and x-bus interfaces. 8.1. memory and io address map piix4 interfaces to two system buses ? pci and isa buse s. piix4 provides positive decode for certain i/o and memory space accesses on these buses as described in this section. isa masters and dma devices have access to pci memory and some of the internal piix4 registers as described in the register description section. isa masters and dma devices do not have access to host or pci i/o space. 8.1.1. i/o accesses piix4 positively decodes accesses to all internal registers, including pci configuration registers (pci only), isa- compatible io registers (pci and isa), and all relocatable io space registers (ide, usb, power management). accesses to the isa/eio bus can be configured to be either subtractive decode or positive decode. piix4 provides a wide variety of positive decode ranges for standard devices as well as a number of programmable ranges for additional devices. piix4 also provides positive decode for bios, x-bus, and system event decode for power management support. in addition, piix4 positively decodes pci bus accesses to registers located on the ide device, when enabled. 8.1.2. memory address map for pci accesses to isa memory, accesses below 16 mbytes (including bios space) that are not claimed by a pci device are forwarded to isa when subtractive decode is enabled. if subtractive decode is disabled, piix4 forwards cycles for programmable ranges (32 kb ? 4 mb) associated with power management devices 12 and 13 and for bios ranges described below. for write accesses that are not claimed by an isa slave, the cycle completes normally (i.e., 8-bit, 6 sysclk cycle). for read accesses that are not claimed by an isa slave, piix4 returns data corresponding to the state of the isa bus and completes the cycle normally (i.e., 8-bit, 6 sysclk cycle). for isa or dma accesses to main memory, all accesses to memory locations 0 ? 512 kbytes (512 ? 640 kbytes, if enabled), or accesses above 1 mbyte and below the top of memory are forwarded to the pci bus (table 18 ). the top of memory is equal to the value programmed in the top of memory register (bits [7:3]). all remaining isa originated memory accesses are confined to the isa bus. piix4 also forwards any accesses to an enabled i/o apic address range. see descriptions for the apic base address relocation register and x-bus chip select register for additional information.
e 82371AB (piix4) 155 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 18 . dma and isa master accesses to main memory memory space response top of main memory to 128 mbytes confine to isa 1 mbyte to top of main memory forward to pci 1 1 mbyte minus 128 kbytes to 1 mbyte minus 64 kbytes confine to isa 2 640 kbytes to 1 mbyte minus 128 kbytes confine to isa 512 ? 640 kbytes confine to isa 3 0 ? 512 kbytes forward to pci notes: 1. except accesses to programmed memory hole. 2. forward to main memory if bit 6=0 in the xbcs register and bit 3=1 in the tom register. 3. forward to main memory if bit 1=0 in the tom register. 8.1.3. bios memory piix4 supports 1 mbyte of bios memory space. this includes the normal 128-kbyte space plus an additional 384 kbyte (extended bios space) and 512 kbyte of bios space (1m extended bios area). the xbcs register provides bios space access control. access to the lower 64-kbyte block of the 128-kbyte space and both extended bios spaces can be individually enabled or disabled. in addition, write protection can be programmed for the entire bios space. pci access to bios memory the 128-kbyte bios memory space is located at 000e0000 ? 000fffffh (top of 1 mbyte) and is aliased at fffe0000h (top of 4 gbytes). this 128-kbyte block is split into two 64-kbyte blocks. accesses to the top 64 kbytes (000f0000 ? 000fffffh) and its aliased region (ffff0000 ? ffffffffh) are always forwarded to the isa bus and bioscs# is always generated. accesses to the bottom 64 kbytes (000e0000 ? 000effffh) are forwarded to the isa bus and bioscs# is only generated when this bios region is enabled (bit 6=1 in the xbcs register). if this bios region is enabled, accesses to the aliased region at the top of 4 gbytes (fffe0000h ? fffeffffh) are also fo rwarded to isa and bioscs# generated. if disabled, these accesses are not forwarded to isa and bioscs# is not generated. the extended bios space resides at fff80000 ? fffdffffh. if this bios region is enabled (bit 7=1 in the xbcs register), these accesses are forwarded to isa and bioscs# generated. the 1m extended bios space resides at fff00000 ? fff7ffffh. if this bios region is enabled (bit 9=1 in the xbcs register), these accesses are forwarded to isa and bioscs# generated. if disabled, these accesses are not forwarded to isa and bioscs# not generated. table 19 shows the bios memory map. piix4 provides a bit in the xbcs register (bit 2) that when set to 0, prevents bioscs# from being asserted during bios memory write accesses to the decoded bios region. when set to 1, bioscs# is asserted for memory read and write accesses to the decoded bios region. this bit defaults to 0 (bios write protected) at reset. pci accesses to enabled bios memory are always positively decoded, regardless of the status of the positive/subtractive decode configuration bit (bit 1, function 0 pci address b0h).
82371AB (piix4) e 156 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary isa access to bios memory piix4 confines all isa-initiated bios accesses to the top 64 kbytes of the 128-kbyte region (f0000 ? fffffh) to the isa bus, even if bios is shadowed in main memory. accesses to the bottom 64 kbytes of the 128-kbyte bios region (e0000 ? effffh) are confined to the isa bus, when this region is enabled. when the bios region is disabled, accesses are forwarded to main memory. accesses to the top 64-kbyte bios region always generates bioscs#. accesses to the bottom 64-kbyte bios region generate bioscs#, when this region is enabled. table 19 . bios memory map 4 gb 4 gb ? 64 kb top 64 kb ffffffffh ffff0000h bioscs# always generated. 4 gb ? 64 kb 4 gb ? 128 kb lower 64 kb fffeffffh fffe0000h 4 gb ? 128 kb 4 gb ? 512 kb extended 384 kb fffdffffh fff80000h 4 gb ? 512 kb 4 gb ? 1 mb 1 mb extended 512 kb fff7ffffh fff00000h 4 gb ? 128 kb 1 mb extended 512 kb 16 mb 16 mb ? 64 kb top 64 kb 00ffffffh 00ff0000h reserved memory locations on isa bus. 16 mb ? 64 kb 16 mb ? 128 kb lower 64 kb 00feffffh 00fe0000h reserved memory locations on isa bus if lower bios enabled. 16 mb ? 128 kb 16 mb ? 512 kb extended 384 kb 00fdffffh 00f80000h reserved memory locations on isa bus if lower bios enabled. 16 mb ? 512 kb 15 mb 1 mb extended 512 kb 00f7ffffh 00f00000h reserved memory locations on isa bus if lower bios enabled. 1 mb 1 mb ? 64 kb top 64 kb 000fffffh 000f0000h bioscs# always generated. 1 mb ? 64 kb 1 mb ? 128 kb lower 64 kb 000effffh 000e0000h 0 00000000h
e 82371AB (piix4) 157 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.2. pci interface piix4 incorporates a fully pci bus compatible master and slave interface. as a pci master, piix4 runs cycles on behalf of dma, isa masters, bus master ide, or usb. as a pci slave, piix4 accepts cycles initiated by pci masters targeted for piix4?s internal register set or the isa bus. piix4 directly supports the pci interface running at either 30 or 33 mhz. 8.2.1. transa ction termination piix4 supports the standard pci cycle terminations as described in the pci local bus specification. piix4 as master ? master-initiated termination: piix4 supports three forms of master-initiated termination: 1.) normal termination of a completed transaction, 2.) normal termination of an incomplete transaction due to time- out (applies to line buffer operations-ide bus master, 3.) abnormal termination due to the slave not responding to the transaction (abort). piix4 as a master ? response to tar get-initiated termination: as a master, piix4 responds correctly to the standard target-terminations ? target-abort, retry, or disconnect. piix4 as a target ? target-initiated termination: piix4 supports three forms of target-initiated termination ? disconnect, retry, target abort. 8.2.2. parity support as a master, piix4 generates address parity for read/write cycles and data parity when piix4 is providing the data. as a slave, piix4 generates data parity for read cycles. piix4 does not check parity and does not generate serr# due to an address parity error. however, piix4 does generate an nmi when another pci device asserts serr# (if enabled). par is the calculated parity signal. par is even parity and is calculated on 36 bits ? ad[31:0] signals plus c/be[3:0]#. par is always calculated on 36 bits, regardless of the valid byte enables. par is only guaranteed to be valid one pci clock after the corresponding address or data phase. 8.2.3. pci arbitration piix4 requests the use of the pci bus on behalf of isa devices (bus masters and dma), ide dma slave devices, and the usb host controller using the phold# and phlda# signals. these signals connect to the host-to-pci bridge where the pci arbiter is located. isa devices (bus master or dma) assert dreq to gain access to the isa bus. in response, piix4 asserts phold#. piix4 keeps dack negated until piix4 has ownership of the pci bus and memory. the pci arbiter asserts phlda# to piix4 when the above conditions are met. piix4 gives ownership of the isa bus (pci and memory) to the isa device after sampling phlda# asserted. the usb host controller utilizes the arbitration advantage available through the phold#/phlda# protocol to do multiple transactions on the pci bus once it has the ownership of the bus and the mlt count has not expired. the usbhc relinquishes the bus ownership as soon as the transactions are completed or the mlt counter has expired, whichever happens first. piix4 uses the delay transaction (or delay completion) and passive release features to help raise the available bandwidth of the pci bus.
82371AB (piix4) e 158 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.3. isa/eio interface piix4 can incorporate a fully isa bus compatible master and slave interface or a subset interface called the extended io (eio) bus. piix4 can directly drive the equivalent of five isa slots without external data buffers. the isa or eio signals are independent of other functions and no external transceivers are required. the isa or eio interface also provides byte swap logic, i/o recovery support, wait state generation, and sysclk generation. the isa interface supports the following types of cycles: pci master-initiated i/o and memory cycles to the isa bus. dma compatible cycles between main memory and isa i/o and between isa i/o and isa memory. enhanced dma cycles between pci memory and isa i/o (for motherboard devices only). isa refresh cycles initiated by either piix4 or an external isa master. isa master-initiated memory cycles to pci and isa master-initiated i/o cycles to the internal piix4 registers, as shown in isa-compatible register table in the register mapping section. the eio interface differs from isa interface in following ways: isa master cycles are not supported. only 20 bits of addressing allowed (no la signals). isa refresh is not supported. 8.4. dma controller the dma circuitry incorporates the functionality of two 82c37 dma controllers with seven independently programmable channels (figure 3 ). dma controller 1 (dma-1) corresponds to dma channels 0 ? 3 and dma controller 2 (dma-2) corresponds to channels 5 ? 7. dma channel 4 is used to cascade the two controllers and will default to cascade mode in the dma channel mode (dcm) register. this channel is not available for any other purpose. in addition to accepting requests from dma slaves, the dma controller also responds to requests that are initiated by software. software may initiate a dma service request by setting any bit in the dma channel request register to a 1. channel 0 channel 1 channel 2 channel 3 channel 4 channel 5 channel 6 channel 7 dma-1 dma-2 dma_blk figure 3 . internal dma controller
e 82371AB (piix4) 159 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary each dma channel is hardwired to the compatible settings for dma device size: channels [3:0] are hardwired to 8-bit, count-by-bytes transfers, and channels [7:5] are hardwired to 16-bit, count-by-words (address shifted) transfers. piix4 provides the timing control and data size translation necessary for the dma transfer between the memory (isa or dram) and the isa bus io. isa-compatible and type f-dma timing is supported. piix4 provides 24-bit addressing in compliance with the isa-compatible specification. each channel includes a 16-bit isa-compatible current register which holds the 16 least-significant bits of the 24-bit address, an isa- compatible page register which contains the eight next most significant bits of address. the dma controller also features refresh address generation, and autoinitialization following a dma termination. the dma controller is at any time either in master mode or slave mode. in master mode, the dma controller is either servicing a dma slave?s request for dma cycles, or allowing a 16-bit isa master to use the bus via a cascaded dreq signal. in slave mode, piix4 monitors both the isa bus and pci, decoding and responding to i/o read and write commands that address its registers. note that a dma device (i/o device) is always on the isa bus, but the memory referenced is located on either an isa bus device or on pci. when piix4 is running a compatible dma cycle, it drives the memr# or memw# strobes if the address is less than 16 mbytes (000000h ? ffffffh). these memory strobes are generated regardless of whether the cycle is decoded for pci or isa memory. the smemr# and smemw# are generated if the address is less than 1 mbytes (0000000h ? 00fffffh). if the address is greater than 16 mbytes (1000000h ? 7ffffffh), the memr# or memw# strobe are not generated to avoid aliasing issues. note bios programming: for type f timing mode dma transfers, the channel must be programmed with a memory range that will be forwarded to pci. this means that if bios detects that isa memory is used in the system (i.e., that the top of memory reported to the os is higher than the top of memory programmed in piix4 top of memory register), the bios should not enable type f for any channel. piix4 drives the aen signal asserted (high) during dma cycles to prevent the i/o devices from misinterpreting the dma cycle as a valid i/o cycle. the bale signal is also driven high during dma cycles. 8.4.1. dma transfer modes the channels can be programmed for any of four transfer modes. the transfer modes include single, block, demand, or cascade. each of the three active transfer modes (single, block, and demand), can perform three different types of transfers (read, write, or verify). note that memory-to-memory transfers are not supported by piix4. single transfer mode in single transfer mode, the dma is programmed to make one transfer only. the byte/word count is decremented and the address decremented or incremented following each transfer. when the byte/word count ? rolls over ? from zero to ffffh, a terminal count (tc) causes an autoinitialize if the channel has been programmed to do so. to be recognized dreq must be held active until dack# becomes active. if dreq is held active throughout the single transfer, the bus is released after a single transfer. with dreq asserted high, the dma i/o device re- arbitrate for the bus. upon winning the bus, another single transfer is performed. this allows other isa bus masters a chance to acquire the bus.
82371AB (piix4) e 160 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary block transfer mode in block transfer mode, the dma is activated by dreq to continue making transfers during the service until a tc, caused by either a byte/word count going to ffffh, is encountered. dreq need only be held active until dack# becomes active. if the channel has been programmed for it, an autoinitialization occurs at the end of the service. in this mode, it is possible to lock out other devices for a period of time (including refresh) if the transfer count is programmed to a large number. note block mode transfers are not supported with type f dma. demand transfer mode in demand transfer mode, the dma channel is programmed to continue making transfers until a tc (terminal count) is encountered, or until the dma i/o device releases dreq. thus, transfers may continue until the i/o device has exhausted its data capacity. after the i/o device catches up, the dma service is re-established when the dma i/o device reasserts the channel?s dreq. during the time between services when the system is allowed to operate, the intermediate values of address and byte/word count are stored in the dma controller current address and current byte/word count registers. a tc can cause an autoinitialize at the end of the service, if the channel has been programmed for it. cascade mode in cascade mode, the dma controller will respond to dreq with dack, but piix4 will not drive ior#, iow#, memr#, memw#, la[23:17], sa[19:0], and sbhe#. cascade mode is also used to allow direct access of the system by 16-bit bus masters. these devices use the dreq and dack signals to arbitrate for the isa bus. the isa master asserts its isa master request line (dreq[x]) to the dma internal arbiter. if the isa master wins the arbitration, piix4 responds with an isa master acknowledge (dack[x]) signal active. upon sampling the dack[x] line active, the isa master takes control of the isa bus. while an isa master owns the bus, bale is always driven high while aen is always driven low. the isa master has control of the isa bus and may run cycles until it negates the dreq[x] line. 8.4.2. dma transfer types each of the three active transfer modes (single, block, or demand) can perform three different types of transfers. these are read, write and verify. write transfers write transfers move data from an isa i/o device to memory located on the isa bus or in system dram. for transfers using compatible timing, piix4 will activate isa memory control signals to indicate a memory write as soon as the dma provides the address. the pci transfer is initiated after the data is valid on the isa bus. data steering is used to steer the data to the correct byte lane during these dma transfers. when the memory is located on the isa bus, a pci cycle is not initiated. the dma device (i/o device) is either an 8- or 16-bit device and is located on the isa bus. the dma device size is fixed for each channel.
e 82371AB (piix4) 161 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary read transfers read transfers move data from isa memory or the system dram, to an isa i/o device. piix4 activates the iow# command and the appropriate dram and isa memory control signals to indicate a memory read. data steering is used to steer the data to the correct byte lane during these dma transfers. when the cycle involves dram, the pci read transaction is initiated as soon as the dma address is valid. when the memory is located on the isa bus, a pci cycle is not initiated. verify transfer verify transfers are pseudo transfers. the dma controller generates addresses as in normal read or write transfers. however, piix4 does not activate the isa memory and i/o control lines. only the dack lines will go active. piix4 asserts the appropriate dack signal for nine sysclks. if verify transfers are repeated during block or demand dma requests, each additional pseudo transfer will add eight sysclks. the dack lines will not be toggled for repeated transfers. note verify transfers are not supported with type f dma. 8.4.3. dma timings isa-compatible timing is provided for isa dma slave devices that reside on add in cards. in addition, type f timing (three sysclk period) is provided for motherboard dma slave and isa dma slaves. the type f timing (along with the 4-byte dma buffer) is enabled by setting the mbdmax[fast] bit. the repetition rate for isa-compatible dma cycles is eight sysclk periods. the type f cycles occur back to back at a minimum repetition rate of three sysclks (360 ns min). the type f cycles are always performed using the 4-byte dma buffer. when piix4 negates phold# one clock after driving frame# asserted for a bus master ide transaction or a type f dma transaction, and another transaction is pending which will cause piix4 to acquire the pci bus, it will drive phold# asserted for the next transaction three clocks after trdy# is driven negated for the current transaction. 8.4.4. dma buffer for type f transfers the dma buffer referred to above is a 4-byte buffer that is used to reduce the pci utilization resulting from dma transfers by motherboard devices. the dma buffer is always used in conjunction with the type f transfers. the type f transfers and the use of the dma buffer are invoked by setting the mbdmax[fast] register bit for the appropriate channel. the 4-byte buffer and the type f timings may be used only when the dma channel is programmed to increment mode (not decrement), and cannot be used when the channel is programmed to operate in block mode (single transfer mode and demand mode are legal). 8.4.5. dreq and dack# latency control the piix4 dma arbiter maintains a minimum dreq to dack# latency on all dma channels when programmed in compatible mode. this is to support older devices such as the 8272a. the dreqs are delayed by eight sysclks prior to being seen by the arbiter logic. this delay guarantees a minimum 1 m sec dreq to dack# latency. software requests will not have this minimum request to dack# latency. when programmed to operate in type f timing mode (by setting mbdma[fast]), the eight sysclk latency is not in effect.
82371AB (piix4) e 162 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.4.6. channel priority for priority resolution, the dma consists of two logical channel groups: channels 0 ? 3 and channels 4 ? 7. each group may be in either fixed or rotate mode, as determined by the dma command register. dma i/o slaves normally assert their dreq line to arbitrate for dma service. however, a software request for dma service can be presented through each channel?s dma request register. a software request is subject to the same prioritization as any hardware request. please see the detailed register description for request register programming information in the dma register description section. fixed priority the initial fixed priority structure is as follows: high priority...low priority (0, 1, 2, 3) (5, 6, 7) the fixed priority ordering is 0, 1, 2, 3, 5, 6, and 7. in this scheme, channel 0 has the highest priority, and channel 7 has the lowest priority. channels [3:0] of dma-1 assume the priority position of channel 4 in dma-2, thus taking priority over channels 5, 6, and 7. rotating priority rotation allows for ? fairness ? in priority resolution. the priority chain rotates so that the last channel serviced is assigned the lowest priority in the channel group (0 ? 3, 5 ? 7). channels 0 ? 3 rotate as a group of four. they are always placed between channel 5 and channel 7 in the priority list. channel 5 ? 7 rotate as part of a group of four. that is, channels (5 ? 7) form the first three positions in the rotation, while channel group (0 ? 3) compri ses the fourth position in the arbitration. 8.4.7. register functional ity please see the ? dma register description ? section, for detailed information on register programming, bit definitions, and default values/functions of the dma registers after cpurst is valid. dma channel 4 is used to cascade the two dma controllers together and should not be programmed for any mode other than cascade. the dma channel mode register for channel 4 will default to cascade mode. special attention should also be taken when programming the command and mask registers as related to channel 4. 8.4.8. address compatibili ty mode whenever the dma is operating, the addresses do not increment or decrement through the high and low page registers. this is compatible with the 82c37 and page register implementation used in the pc-at. this mode is set after cpurst is valid.
e 82371AB (piix4) 163 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.4.9. summary of dma tran sfer sizes table 20 lists each of the dma device transfer sizes. the column labeled ? c urrent byte/word count register ? indicates that the register contents represents either the number of bytes to transfer or the number of 16-bit words to transfer. the column labeled ? current address increment/decrement ? indicates the number added to or taken from the current address register after each dma transfer cycle. the dma channel mode register determines if the current address register will be incremented or decremented. table 20 . dma transfer size dma device date size and word count current byte/word count register current address increment/decrement 8-bit i/o, count by bytes bytes 1 16-bit i/o, count by words (address shifted) words 1 8.4.9.1. address shifting when programmed for 16-bit i/o count by words piix4 maintains compatibility with the implementation of the dma in the pc at which used the 82c37. the dma shifts the addresses for transfers to/from a 16-bit device count-by-words. note that the least significant bit of the low page register is dropped in 16-bit shifted mode. when programming the current address register (when the dma channel is in this mode), the current address must be programmed to an even address with the address value shifted right by 1 bit. the address shifting is as follows: table 21 . address shifting in 16-bit i/o dma transfers output address 8-bit i/o programmed address (ch 0 ? 3) 16-bit i/o programmed address (ch 5 ? 7) (shifted) a0 a[16:1] a[23:17] a0 a[16:1] a[23:17] 0 a[15:0] a[23:17] notes: the least significant bit of the page register is dropped in 16-bit shifted mode. 8.4.10. autoinitialize by programming a bit in the dma channel mode register, a channel may be set up as an autoinitialize channel. when a channel undergoes autoinitialization, the original values of the current page, current address and current byte/word count registers are automatically restored from the base page, address, and byte/word count registers of that channel following tc. the base registers are loaded simultaneously with the current registers by the microprocessor when the dma channel is programmed and remain unchanged throughout the dma service. the mask bit is not set when the channel is in autoinitialize. following autoinitialize, the channel is ready to perform another dma service, without cpu intervention, as soon as a valid dreq is detected.
82371AB (piix4) e 164 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.4.11. software commands there are three additional special software commands which can be executed by the dma controller. the three software commands are: 1. clear byte pointer flip-flop 2. master clear 3. clear mask register they do not depend on any specific bit pattern on the data bus. clear byte pointer flip-flop this command is executed prior to writing or reading new address or word count information to/from the dma controller. this initializes the flip-flop to a known state so that subsequent accesses to register contents by the microprocessor will address upper and lower bytes in the correct sequence. when the host cpu is reading or writing dma registers, two byte pointer flip-flops are used; one for channels 0 ? 3 and one for channels 4 ? 7. both of these act independently. there are separate software commands for clearing each of them (0ch for channels 0 ? 3, 0d8h for channels 4 ? 7). dma master clear this software instruction has the same effect as the hardware reset. the command, status, request, and internal first/last flip-flop registers are cleared and the mask register is set. the dma controller will enter the idle cycle. there are two independent master clear commands; 0dh which acts on channels 0 ? 3, and 0dah which acts on channels 4 ? 7. clear mask register this command clears the mask bits of all four channels, enabling them to accept dma requests. i/o port 00eh is used for channels 0 ? 3 and i/o port 0dch is used for channels 4 ? 7. 8.4.12. isa refresh cycles refresh cycle requests are generated by two sources: the refresh controller inside piix4 or by isa bus masters other than the piix4. in both cases, the piix4 will generate the isa memory refresh. the piix4 isa bus controller will enable the address lines sa[7:0] so that when memr# goes active, the entire isa system memory is refreshed at one time. memory slaves on the isa bus must not drive any data onto the data bus during the refresh cycle. piix4 maintains a four deep buffer to record internally generated refresh requests which have not been serviced. counter 1 in the timer register set should be programmed to provide a request for refresh about every 15 s. piix4 initiated refresh cycle this refresh cycle is initiated by the refresh logic inside piix4. piix4 asserts refresh# to indicate a refresh cycle. piix4 then drives the address lines sa[7:0] onto the isa bus and generates memr# and smemr#. piix4 drives aen and bale high for the entire refresh cycle. the memory device may extend this refresh cycle by pulling iochrdy low.
e 82371AB (piix4) 165 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary isa bus refresh cycles are completely decoupled from dram refresh. transactions driven by pci masters that target isa or ide resources while refresh is active are held off with wait states until the refresh is complete. isa master initiated refresh cycle if an isa bus master holds the isa bus longer than 15 s, the isa master must initiate memory refresh cycles. if the isa bus master initiates a refresh cycle before it relinquishes the bus, it floats the address lines and control signals and asserts the refresh# to piix4. piix4 drives address lines sa[7:0] and memr# onto the isa bus. bale is driven high and aen is driven low for the entire refresh cycle. if the isa bus master holding the bus does not generate a refresh request and piix4?s internal refresh request is not serviced within the normal 15 microseconds, a refresh queue counter is incremented. the counter records up to four incomplete refresh cycles, which are all executed as soon as piix4 gets the isa bus. 8.5. pci dma piix4 supports two types of pci dma protocols: pc/pci and distributed dma. they are completely different protocols that are used for different types of peripherals. pc/pci dma uses dedicated request and grant signals to permit pci devices to request transfers associated with specific dma channels. upon receiving a request and getting control of the pci bus, piix4 performs a two-cycle transfer. for example, if data is to be moved from the peripheral to main memory, piix4 will first read data from the peripheral and then write it to main memory. the location in main memory is the current address registers in the 8237. piix4 supports up to three pc/pci req/gnt pairs. distributed dma is based on monitoring cpu accesses to the 8237. if the accesses are associated with dma channels that are ? distributed ? (in some pci peripheral), then piix4 collects or distributes the data before letting the cpu complete its accesses. this way the cpu thinks that it is accessing a standard 8237-based design, even though the registers are not located in piix4. a 16-bit register is included in the piix4 function 0 configuration space at offset 90h. it is divided into seven 2-bit fields that are used to configure the 7 dma channels. each dma channel can be configured to one of three options: standard isa (or eio) dma using the standard isa dreq/dack signals. pc/pci style dma using the req/gnt signals. distributed dma. it is not possible for a particular dma channel to be configured for more than one style of dma; however, the seven channels can be programmed independently. for example, channel 3 could be set up for pc/pci and channel 5 set up for distributed dma. additional configuration is required separately for the pc/pci and distributed dma functions and is described below. 8.5.1. pc/pci dma piix4 provides support for dma across pci using the pc/pci dma protocol. the pci dma request/grant pairs, req[a:c]# and gnt[a:c]#, can be configured for support of a pc/pci dma expansion agent. the pci dma expansion agent can then provide dma service or isa bus master service using the piix4 dma controller. the req#/gnt# pair must follow the pc/pci serial protocol described below.
82371AB (piix4) e 166 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary pci dma expansion protocol the pci expansion agent must support the pci expansion channel passing protocol defined in figure 4 for both the req# and gnt# pins. pciclk start ch0 ch1 ch2 ch3 ch4 ch5 ch6 ch7 bit0 bit1 bit2 start req# gnt# dma_s_ch figure 4 . dma serial channel passing protocol the requesting device must encode the channel request information as shown above, where ch0 ? ch7 are one clock active high states representing dma channel requests 0 ? 7. piix4 encodes the granted channel on the gnt# line as shown above, where the bits have the same meaning as shown in the figure 4 . for example, the sequence [start, bit 0, bit 1, bit 2]=[0,1,0,0] grants dma channel 1 to the requesting device, and the sequence [start, bit 0, bit 1, bit 2]=[0,0,1,1] grants dma channel 6 to the requesting device. all pci dma expansion agents must use the channel passing protocol described above. they must also work as follows: 1. if a pci dma expansion agent has more than one request active, it must resend the request serial protocol after one of the requests has been granted the bus and it has completed its transfer. the expansion device should drive its req# inactive for two clocks and then transmit the serial channel passing protocol again, even if there are no new requests from the pci expansion agent to piix4. for example: if a pci expansion agent had active requests for dma channel 1 and channel 5, it would pass this information to piix4 through the expansion channel passing protocol. if after receiving gnt# (assume for ch5) and having the device finish its transfer (device stops driving request to pci expansion agent) it would then need to re-transmit the expansion channel passing protocol to inform piix4 that dma channel 1 was still requesting the bus, even if that was the only request the expansion device had pending. 2. if a pci dma expansion agent has a request go inactive before piix4 asserts gnt#, it must resend the expansion channel passing protocol to update piix4 with this new request information. for example: if a pci expansion agent has dma channel 1 and 2 requests pending it will send them serially to piix4 using the expansion channel passing protocol. if, however, dma channel 1 goes inactive into the expansion agent before the expansion agent receives a gnt# from piix4, the expansion agent must pull its req# line high for one clock and resend the expansion channel passing information with only dma channel 2 active. note that piix4 does not do anything special to catch this case because a dreq going inactive before a dack# is received is not allowed in the isa dma protocol and, therefore, does not need to work properly in this protocol either. this requirement is needed to be able to support plug-n-play isa devices that toggle dreq# lines to determine if those lines are free in the system. 3. if a pci expansion agent has sent its serial request information and receives a new dma request before receiving gnt# the agent must resend the serial request with the new request active. for example: if a pci expansion agent has already passed requests for dma channel 1 and 2 and sees dreq 3 active before a gnt is received, the device must pull its req# line high for one clock and resend the expansion channel passing information with all three channels active.
e 82371AB (piix4) 167 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary the three cases above require the following functionality in the pci dma expansion device: 1. drive req# inactive for one clock to signal new request informatio n. 2. drive req# inactive for two clocks to signal that a request that had been granted the bus has gone inactive. 3. the req# and gnt# state machines must run independently and concurrently (i.e., a gnt# could be received while in the middle of sending a serial req# or a gnt# could be active while req# is inactive). pci dma expansion cycles piix4?s support of the mobile pc/pci dma protocol currently consists of four types of cycles: memory to i/o, i/o to memory, verify, and isa master cycles. isa masters are supported through the use of a dma channel that has been programmed for cascade mode. single transfer mode is implicitly supported as the case where the dma controller negates the dack#/gnt# signal after one transfer has been completed or the dma controller toggles dack# after every transfer. single transfer mode does not require the requesting device to negate dreq# after a cycle has completed. therefore, a pci dma agent that uses this mode must also sample the gnt# signal and remove dack# to the i/o dma device when gnt# goes inactive. the dma controller does a two cycle transfer (a load followed by a store) as opposed to the isa ? fly-by ? cycle for pc/pci dma agents. the memory portion of the cycle generates a pci memory read or memory write bus cycle, its address representing the selected memory. the i/o portion of the dma cycle generates a pci i/o cycle to one of four i/o addresses (table 22 ). note that these cycles must be qualified by an active gnt# signal to the requesting device. table 22 . dma cycle vs. i/o address dma cycle type dma i/o address tc (a2) pci cycle type normal 00h 0 i/o read/write normal tc 04h 1 i/o read/write verify 0c0h 0 i/o read verify tc 0c4h 1 i/o read for pci dma cycles, the i/o address indicates the type of dma cycle taking place (whether its a normal or a verify cycle, and if this is the last transfer of the buffer). note that the a2 address line is encoded as the terminal count signal for pci cycles; a2 asserted during a pci i/o cycle indicates the last transfer in the current dma buffer. to ensure that non mobile pc/pci compliant pci i/o devices do not confuse mobile pc/pci dma cycles for normal i/o cycles, the addresses used by the pci dma cycles correspond to the slave addresses of the mobile pc/pci dma controller. all pci dma i/o ports must be dword aligned and can be either byte or word in size. this means that any pci dma i/o port must always be connected to the lower data lines of the pci data bus (table 23 ). the byte enables also reflect this during the i/o portion of a pci dma cycle. table 24 illustrates the byte enable state for any given pci dma cycle: table 23 . pci data bus vs. dma i/o port size pci dma i/o port size pci data bus connection byte ad[7:0]
82371AB (piix4) e 168 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 23 . pci data bus vs. dma i/o port size pci dma i/o port size pci data bus connection word ad[15:0] table 24 . dma i/o cycle width vs. be[3:0]# be[3:0]# description 1110b 8-bit dma i/o cycle 1100b 16-bit dma i/o cycle notes: for verify cycles the value of the byte enables (bes) is a ? don?t care. ? every dma device (including secondary bus arbiters) must recognize a valid signal on its gnt# combined with the dma i/o address as its command authorization to initiate a dma access cycle. piix4 is required to assert the dma i/o device?s gnt# signal until the data phase of the i/o portion of the dma transfer. 8.5.2. distributed dma the distributed dma (ddma) scheme is based on the concept that the registers associated with individual dma can physically reside outside of piix4, specifically on other pci devices. the distributed dma logic in piix4 is only used when the cpu does accesses to the 8237 registers. data movement is the responsibility of the peripheral. separate algorithms are followed depending whether the cpu attempts a read cycle or write cycle. each is covered separately. piix4 is able to determine if a particular dma channel is ? distributed ? based on the pci configuration space. additional configuration piix4 contains two registers to indicate the i/o locations for the relocated dma registers for the ddma peripherals. the first register indicates the offset of the registers associated with dma channels 0 ? 3. the second indicates the offset of the registers associated with dma channels 5 ? 7. channel 4 is assumed to be unavailable. it is up to the bios or other configuration software to program the ddma peripherals to the corresponding locations.
e 82371AB (piix4) 169 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary read/write cycles protocol for read cycles on the pci bus that correspond to distributed dma channels, piix4 performs the following: piix4 issues a pci retry to terminate this cycle. piix4 requests the pci bus. upon being granted access to the bus, piix4 performs one or more read cycles to the 8237 and/or the peripherals. the i/o location of the read cycle is calculated based on several parameters: the ddma base pointer registers in the pci configuration space, the dma channel number (0 ? 3, 5 ? 7), and the register location (0h ? fh). piix4 uses the data obtained via the read cycles (along with the value in the 8237) to construct the proper data value. when the cpu retries the cycle, piix4 responds with the proper data value. the specific number of read cycles and merging format for each of the 8237 registers is covered in table 25 . for write cycles on the pci bus that correspond to distributed dma channels, piix4 performs the following: piix4 issues a pci retry to terminate this cycle. piix4 requests the pci bus. upon being granted access to the bus, piix4 performs one or more write cycles to the 8237 and/or the peripherals. the i/o location of the write cycle is calculated based on several parameters: the ddma base pointer registers in the pci configuration space, the dma channel number (0 ? 3, 5 ? 7), and the register location (0h ? fh). piix4 uses the data obtained via the cpu?s original write cycles to determine the proper values to write to the peripherals and to the 8237. when the cpu retries the cycle, piix4 lets it complete normally. calculating the i/o address when piix4 attempts to access the pci peripheral, it performs i/o read or write cycles. the exact address to use is calculated as follows: bits [31:16] are 0. bits [15:6] are indicated by the base pointer in the pci configuration space for function 0. the base pointer at offset 92h is used for dma channels 0 ? 3. the base pointer at offset 94h is used for dma channels 5 ? 7. bits [5:4] are determined by the dma channel number being accessed. dma channel bits [5:4] number 0 00 1 or 5 01 2 or 6 10 3 or 7 11 bits [3:0] are determined by the register being accessed. note the mapping in the peripheral is not the same as in the 8237. table 25 shows the mapping of the 8237 register to the distributed dma peripheral.
82371AB (piix4) e 170 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 25 . 8237 register map to distributed dma peripheral i/o address 8237 f/f status r/w 8237 register name ? distributed ? cycle i/o address 0, 2, 4, or 6h, c4, c8, or cch 0 w base address register a[0:7] base pointer + channel # + 0h 0, 2, 4, or 6h, c4, c8, or cch 0 r current address register a[0:7] base pointer + channel # + 0h 0, 2, 4, or 6h, c4, c8, or cch 1 w base address register a[8:15] base pointer + channel # + 1h 0, 2, 4, or 6h, c4, c8, or cch 1 r current address register a[8:15] base pointer + channel # + 1h 87h, 83, 81, 82h 8b, 89, 8ah x r/w page register base pointer + channel # + 2h 1, 3, 5, or 7h, c6, ca, ceh 0 w base word count register d[0:7] base pointer + channel # + 4h 1, 3, 5, or 7h, c6, ca, ceh 0 r current word count register d[0:7] base pointer + channel # + 4h 1, 3, 5, or 7h, c6, ca, ceh 1 w base word count register d[8:15] base pointer + channel # + 5h 1, 3, 5, or 7h, c6, ca, ceh 1 r current word count register d[8:15] base pointer + channel # + 5h 08h d0h x w command register base pointer + channel # + 8h 08h d0h x r status register base pointer + channel # + 8h 09h d2h x w request register base pointer + channel # + 9h 0bh d6h x w mode register base pointer + channel # + bh 0dh dah x w master clear base pointer + channel # + dh 0fh deh x w write all masks register base pointer + channel # + fh ah d4h x w single channel mask see comments below. 0eh dch x w clear mask register see comments below.
e 82371AB (piix4) 171 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary single channel mask register to make the peripherals easier to implement, the distributed dma specification does not have the peripherals implement the single-channel mask registers. instead, a write to the single channel mask register (which encodes the channel number in the low two bits) causes write the write all masks register (which has a separate mask bit for each channel). the distributed dma peripheral uses bit 0 in the write all masks register for that particular channel. thus, when a write occurs to the single channel mask register, piix4 examines the low two data bits to determine the dma channel number. this causes a write the peripheral at base pointer + channel # + fh. the data value (bit 0) for that write cycle is determined by data bit 2 of the original cpu write. clear mask register to make the peripherals easier to implement, the distributed dma specification does not have the peripherals implement the clear mask command. instead, a write to the clear mask command register (which has a don?t care data value causes writes to all the distributed channels associated with that 8237). thus, when a write occurs to the clear mask command register, piix4 performs up to 4 writes to the write all masks register (base pointer + channel # + fh) with a data value of 0h. if another pci master attempts to read or write to one of the dma controller?s registers while a distributed dma cycle is in progress, that cycle will be retried until the pc dma protocol completes. this prevents two outstanding pc/pci requests. 8.6. interrupt controller piix4 provides an isa-compatible interrupt controller that incorporates the functionality of two 82c59 interrupt controllers (figure 5 ). the two controllers are cascaded, providing 13 external and three internal interrupts. the master interrupt controller provides irq [7:0] and the slave interrupt controller provides irq [15:8]. the three internal interrupts are used for internal functions only. irq0 is available to the user only when an external io apic is enabled. irq2 is used to cascade the two controllers and is not available to the user. irq0 is used as a system timer interrupt and is tied to interval timer 1, counter 0. irq13 is connected internally to ferr#. the remaining 13 interrupt lines (irq[15:14,12:3,1]) are available for external system interrupts. edge or level sense selection is programmable on an individual channel by channel basis. the interrupt unit also supports interrupt steering. piix4 can be programmed to allow the four pci active low interrupts (pirq[a:d]#) to be internally routed to one of 11 interrupts (irq[15:14,12:9,7:3]). the interrupt controller consists of two separate 82c59 cores. interrupt controller 1 (cntrl-1) and interrupt controller 2 (cntrl-2) are initialized separately and can be programmed to operate in different modes. the default settings are: 80x86 mode, edge sensitive (irq[0:15]) detection, normal eoi, non-buffered mode, special fully nested mode disabled, and cascade mode. cntrl-1 is connected as the master interrupt controller and cntrl-2 is connected as the slave interrupt controller. note that irq13 is generated internally (as part of the coprocessor error support) by piix4. irq12/m is generated internally (as part of the mouse support) when bit-4 in the xbcs is set to a 1. when set to a 0, the standard irq12 function is provided and irq12 appears externally.
82371AB (piix4) e 172 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary irq8# irq9 irq10 irq11 irq12/mouse ferr# irq14 irq15 82c59 core controller 2 (slave) timer 1 counter irq1 irq3 irq4 irq5 irq6 irq7 82c59 core controller 1 (master) intr intr (to cpu) intr_blk figure 5 . interrupt controller block diagram 8.6.1. programming the int errupt controller the interrupt controller accepts two types of command words generated by the cpu or bus master: initialization command words (icws) before normal operation can begin, each interrupt controller in the system must be initialized. in the 82c59, this is a 2- to 4-byte sequence. however, for piix4, each controller must be initialized with a 4-byte sequence. this 4-byte sequence is required to configure the interrupt controller correctly for piix4 implementation. this implementation is isa-compatible. the four initialization command words are referred to by their acronyms: icw1, icw2, icw3, and icw4. the base address for each interrupt controller is a fixed location in the i/o memory space, at 0020h for cntrl-1 and at 00a0h for cntrl-2. an i/o write to the cntrl-1 or cntrl-2 base address with data bit 4 equal to 1 is interpreted as icw1. for piix4-based isa systems, three i/o writes to ? base address + 1 ? (021h for cntrl-1 and 0a1h for cntrl-2) must follow the icw1. the first write to ? base address + 1 ? (021h/0a1h) performs icw2, the second write performs icw3, and the third write performs icw4. icw1 starts the initialization sequence. icw2 is programmed to provide bits [7:3] of the interrupt vector that will be released onto the data bus by the interrupt controller during an interrupt acknowledge. a different base [7:3] is selected for each interrupt controller. icw3 is programmed differently for cntrl-1 and cntrl-2, and has a different meaning for each controller. for cntrl-1, the master controller, icw3 is used to indicate which irqx input line is used to cascade cntrl- 2, the slave controller. within the piix4 interrupt unit, irq2 on cntrl-1 is used to cascade the intr output of cntrl-2. consequently, bit 2 of icw3 on cntrl-1 is set to a 1, and the other bits are set to 0?s. for cntrl-2, icw3 is the slave identification code used during an interrupt acknowledge cycle. cntrl-1 broadcasts a code to cntrl-2 over three internal cascade lines if an irq[x] line from cntrl-2 won the priority arbitration on the master controller and was granted an interrupt acknowledge by the cpu. cntrl-2 compares this identification code to the value stored in icw3, and if the code is equal to bits [2:0] of icw3, cntrl-2 assumes responsibility for broadcasting the interrupt vector during the second interrupt acknowledge cycle pulse. icw4 must be programmed on both controllers. at the very least, bit 0 must be set to a 1 to indicate that the controllers are operating in an intel architecture-based system. operation command words (ocws)
e 82371AB (piix4) 173 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary these are the command words which dynamically reprogram the interrupt controller to operate in various interrupt modes. any interrupt lines can be masked by writing an ocw1. a 1 written in any bit of this command word will mask incoming interrupt requests on the corresponding irqx line. ocw2 is used to control the rotation of interrupt priorities when operating in the rotating priority mode and to control the end of interrupt (eoi) function of the controller. ocw3 is used to set up reads of the isr and irr, to enable or disable the special mask mode (smm), and to set up the interrupt controller in polled interrupt mode. the ocws can be written into the interrupt controller any time after initialization. 8.6.2. end-of-interrupt op eration end of interrupt (eoi) the in service (is) bit can be set to 0 automatically following the trailing edge of the second inta# pulse (when aeoi bit in icw1 is set to 1) or by a command word that must be issued to the interrupt controller before returning from a service routine (eoi command). an eoi command must be issued twice with this cascaded interrupt controller configuration, once for the master and once for the slave. there are two forms of eoi commands: specific and non-specific. when the interrupt controller is operated in modes that preserve the fully nested structure, it can determine which is bit to set to 0 on eoi. when a non- specific eoi command is issued, the interrupt controller automatically sets to 0 the highest is bit of those that are set to 1, since in the fully nested mode the highest is level was necessarily the last level acknowledged and serviced. a non-specific eoi can be issued with ocw2 (eoi=1, sl=0, r=0). when a mode is used that may disturb the fully nested structure, the interrupt controller may no longer be able to determine the last level acknowledged. in this case a specific end of interrupt must be issued that includes as part of the command the is level to be reset. a specific eoi can be issued with ocw2 (eoi=1, sl=1, r=0, and lo ? l2 is the binary level of the is bit to be set to 0). note that an is bit that is masked by an imr bit will not be cleared by a non-specific eoi if the interrupt controller is in the special mask mode. automatic end of interrupt (aeoi) mode if aeoi=1 in icw4, then the interrupt controller operates in aeoi mode continuously until reprogrammed by icw4. note that reprogramming icw4 implies that icw1, icw2, and icw3 must be reprogrammed first, in sequence. in this mode, the interrupt controller automatically performs a non-specific eoi operation at the trailing edge of the last interrupt acknowledge pulse. note that from a system standpoint, this mode should be used only when a nested multi-level interrupt structure is not required within a single interrupt controller. the aeoi mode can only be used in a master interrupt controller and not a slave (on cntrl-1 but not cntrl-2). 8.6.3. modes of operation fully nested mode this mode is entered after initialization unless another mode is programmed. the interrupt requests are ordered in priority from 0 through 7 (0 being the highest). when an interrupt is acknowledged, the highest priority request is determined and its vector placed on the bus. additionally, a bit of the interrupt service register (is[0:7]) is set. this is bit remains set until the microprocessor issues an end of interrupt (eoi) command immediately before returning from the service routine. or, if the aeoi (automatic end of interrupt) bit is set, this is bit remains set until the trailing edge of the second inta#. while the is bit is set, all further interrupts of the same or lower priority are inhibited, while higher levels will generate an interrupt (which will be acknowledged only if the microprocessor internal interrupt enable flip-flop has been re-enabled through software).
82371AB (piix4) e 174 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary after the initialization sequence, irq0 has the highest priority and irq7 the lowest. priorities can be changed, as will be explained, in the rotating priority mode. the special fully nested mode this mode will be used in the case of a system where cascading is used, and the priority has to be conserved within each slave. in this case, the special fully nested mode will be programmed to the master (using icw4). this mode is similar to the normal nested mode with the following exceptions: when an interrupt request from a certain slave is in service, this slave is not locked out from the master?s priority logic and further interrupt requests from higher priority irqs within the slave will be recognized by the master and will initiate interrupts to the processor. (in the normal nested mode, a slave is masked out when its request is in service and no higher requests from the same slave can be serviced.) when exiting the interrupt service routine, the software has to check whether the interrupt serviced was the only one from that slave. this is done by sending a non-specific end of interrupt (eoi) command to the slave and then reading its in-service register and checking for zero. if it is empty, a non-specific eoi can be sent to the master too. if not, no eoi should be sent. automatic rotation (equal priority devices) in some applications, there are a number of interrupting devices of equal priority. automatic rotation mode provides for a sequential 8-way rotation. in this mode, a device receives the lowest priority after being serviced. in the worst case, a device requesting an interrupt will have to wait until each of seven other devices are serviced at most once. there are two ways to accomplish automatic rotation using ocw2; the rotation on non-specific eoi command (r=1, sl=0, eoi=1) and the rotate in automatic eoi mode which is set by (r=1, sl=0, eoi=0) and cleared by (r=0, sl=0, eoi=0). specific rotation (specific priority) the programmer can change priorities by programming the bottom priority and thus fixing all other priorities. for example, if irq5 is programmed as the bottom priority device, irq6 will be the highest priority device. the set priority command is issued in ocw2 where: r=1, sl=1; lo ? l2 is the binary priority level code of the bottom priority device. see the register description for the bit definitions. note that, in this mode, internal status is updated by software control during ocw2. however, it is independent of the end of interrupt (eoi) command (also executed by ocw2). priority changes can be executed during an eoi command by using the rotate on specific eoi command in ocw2 (r=1, sl=1, eoi=1 and lo ? l2=irq level to receive bottom priority). poll command the polled mode can be used to conserve space in the interrupt vector table. multiple interrupts that can be serviced by one interrupt service routine do not need separate vectors if the service routine uses the poll command. the polled mode can also be used to expand the number of interrupts. the polling interrupt service routine can call the appropriate service routine, instead of providing the interrupt vectors in the vector table. in this mode, the intr output is not used and the microprocessor internal interrupt enable flip-flop is reset, disabling its interrupt input. service to devices is achieved by software using a poll command.
e 82371AB (piix4) 175 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary the poll command is issued by setting p=1 in ocw3. the interrupt controller treats the next i/o read pulse to the interrupt controller as an interrupt acknowledge, sets the appropriate is bit if there is a request, and reads the priority level. interrupts are frozen from the i/o write to the i/o read. this mode is useful if there is a routine command common to several levels so that the inta# sequence is not needed (saves rom space). 8.6.4. cascade mode the interrupt controllers in piix4 are interconnected in a cascade configuration with one master and one slave. this configuration can handle up to 15 separate priority levels. the master controls the slaves through a three line internal cascade bus. when the master drives 010b on the cascade bus, this bus acts like a chip select to the slave controller. in a cascade configuration, the slave interrupt outputs are connected to the master interrupt request inputs. when a slave request line is activated and afterwards acknowledged, the master enables the corresponding slave to release the interrupt vector address during the second inta# cycle of the interrupt acknowledge sequence. each interrupt controller in the cascaded system must follow a separate initialization sequence and can be programmed to work in a different mode. an eoi command must be issued twice: once for the master and once for the slave. 8.6.5. edge and level trig gered mode in isa systems this mode is programmed using bit 3 in icw1. with piix4, this bit is disabled and a new register for edge and level triggered mode selection, per interrupt input, is included. this is the edge/level control registers elcr1 and elcr2. the default programming is equivalent to programming the ltim bit (icw1 bit 3) to a 0 (all interrupts selected for edge triggered mode). note, that irq0, 1, 2, 8#, and 13 can not be programmed for level sensitive mode and can not be modified by software. if an elcr bit=0, an interrupt request is recognized by a low to high transition on the corresponding irqx input. the irq input can remain high without generating another interrupt. if an elcr bit=1, an interrupt request is recognized by a high level on the corresponding irq input and there is no need for an edge detection. the interrupt request must be removed before the eoi command is issued to prevent a second interrupt from occurring. in both the edge and level triggered modes, the irq inputs must remain active until after the falling edge of the first inta#. if the irq input goes inactive before this time, a default irq7 occurs when the cpu acknowledges the interrupt. this can be a useful safeguard for detecting interrupts caused by spurious noise glitches on the irq inputs. to implement this feature, the irq7 routine is used for ? clean up ? simply executing a return instruction, thus ignoring the interrupt. if irq7 is needed for other purposes, a default irq7 can still be detected by reading the isr. a normal irq7 interrupt sets the corresponding isr bit; a default irq7 does not set this bit. however, if a default irq7 routine occurs during a normal irq7 routine, the isr remains set. in this case, it is necessary to keep track of whether or not the irq7 routine was previously entered. if another irq7 occurs, it is a default.
82371AB (piix4) e 176 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.6.6. interrupt masks masking on an individual interrupt request basis each interrupt request input can be masked individually by the interrupt mask register (imr). this register is programmed through ocw1. each bit in the imr masks one interrupt channel, if it is set to a 1. bit 0 masks irq0, bit 1 masks irq1 and so forth. masking an irq channel does not affect the other channel?s operation, with one exception. masking irq2 on cntrl-1 will mask off all requests for service from cntrl-2. the cntrl-2 intr output is physically connected to the cntrl-1 irq2 input. special mask mode some applications may require an interrupt service routine to dynamically alter the system priority structure during its execution under software control. for example, the routine may wish to inhibit lower priority requests for a portion of its execution but enable some of them for another portion. the difficulty is that if an interrupt request is acknowledged and an end of interrupt command did not reset its is bit (i.e., while executing a service routine), the interrupt controller would have inhibited all lower priority requests with no easy way for the routine to enable them. the special mask mode enables all interrupts not masked by a bit set in the mask register. interrupt service routines that require dynamic alteration of interrupt priorities can take advantage of the special mask mode. for example, a service routine can inhibit lower priority requests during a part of the interrupt service, then enable some of them during another part. in the special mask mode, when a mask bit is set to 1 in ocw1, it inhibits further interrupts at that level and enables interrupts from all other levels (lower as well as higher) that are not masked. thus, any interrupts may be selectively enabled by loading the mask register with the appropriate pattern. without special mask mode, if an interrupt service routine acknowledges an interrupt without issuing an eoi to clear the is bit, the interrupt controller inhibits all lower priority requests. the special mask mode provides an easy way for the interrupt service routine to selectively enable only the interrupts needed by loading the mask register. the special mask mode is set by ocw3 where: ssmm=1, smm=1, and cleared where ssmm=1, smm=0. 8.6.7. reading the interru pt controller status the input status of several internal registers can be read to update the user information on the system. the interrupt request register (irr) and in-service register (isr) can be read via ocw3. the interrupt mask register (imr) is read via a read of ocw1. brief descriptions of the isr, the irr, and the imr follow. interrupt request register (irr): 8-bit register which contains the status of each interrupt request line. bits that are clear indicate interrupts that have not requested service. the interrupt controller clears the irr?s highest priority bit during an interrupt acknowledge cycle. (not affected by imr). in-service register (isr): 8-bit register indicating the priority levels currently receiving service. bits that are set indicate interrupts that have been acknowledged and their interrupt service routine started. bits that are cleared indicate interrupt requests that have not been acknowledged, or interrupt request lines that have not been asserted. only the highest priority interrupt service routine executes at any time. the lower priority interrupt services are suspended while higher priority interrupts are serviced. the isr is updated when an end of interrupt command is issued. interrupt mask register (imr): 8-bit register indicating which interrupt request lines are masked.
e 82371AB (piix4) 177 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary the irr can be read when, prior to the i/o read cycle, a read register command is issued with ocw3 (rr=1, ris=0). the isr can be read when, prior to the i/o read cycle, a read register command is issued with ocw3 (rr=1, ris=1). the interrupt controller retains the isr/irr status read selection following each write to ocw3. therefore, there is no need to write an ocw3 before every status read operation, as long as the current status read corresponds to the previously selected register. for example, if the isr is selected for status read by an ocw3 write, the isr can be read over and over again without writing to ocw3 again. however, to read the irr, ocw3 will have to be reprogrammed for this status read prior to the ocw3 read to check the irr. this is not true when poll mode is used. polling mode overrides status read when p=1, rr=1 in ocw3. after initialization the interrupt controller is set to read the irr. as stated, ocw1 is used for reading the imr. the output data bus will contain the imr status whenever i/o read is active the address is 021h or 061h (ocw1). 8.6.8. interrupt steering piix4 can be programmed to allow four pci programmable interrupts (pirq[a:d]#) to be internally routed to one of 11 interrupts irq[15,14,12:9,7:3]. pclk is used to synchronize the pirqx# inputs. the pirqx# lines are run through an internal multiplexer that assigns, or routes, an individual pirqx# line to any one of 11 irq inputs. the assignment is programmable through the pirqx route control registers. one or more pirqx# lines can be routed to the same irqx input. if interrupt steering is not required, the route registers can be programmed to disable steering. bits [3:0] in each pirqx route control register are used to route the associated pirqx# line to an internal irq input. bit 7 in each register is used to disable routing of the associated pirqx#. the pirqx# lines are defined as active low, level sensitive to allow multiple interrupts on a pci board to share a single line across the connector. when a pirqx# is routed to specified irq line, the software must change the irq?s corresponding elcr bit to level sensitive mode. note, that this means that the selected irq can no longer be used by an isa device.
82371AB (piix4) e 178 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.7. serial interrupts piix4 supports a serial irq scheme. this allows a single signal to be used to report isa-style interrupt requests. typically, it will be used in a mobile environment by docking bridges or cardbus controllers. because more than one device may need to share the single serial irq signal, an open collector signaling scheme is used. timing is based on the pci clock. if the pci clock is inactive when a device needs to signal an interrupt, the clkrun# signal must first be asserted by the device to restart the pci clock. the serial irq configuration is handled via the pci configuration space. no other registers are associated with the scheme. 8.7.1. protocol serial interrupt information is transferred using three types of frames: a start frame, one or more irq data frames, and one stop frame. there are also two modes of operation: quiet mode and continuous mode. quiet (active) mode to indicate an interrupt, the peripheral brings the serirq signal active for one clock, and then tri-states the signal. this brings all the state machines from idle to the active states. piix4 then takes control of the serirq signal by driving it low on the next clock, and continues driving it low for 3 ? 7 clocks more (programmable). thus, the total number of clocks low will be 4 ? 8. after those clocks, piix4 drives serirq high for one clock and then tri-state the signal. continuous (idle) mode in this mode, piix4 initiates the start frame, rather than the peripherals. typically, this is done to update irq status (acknowledges). piix4 drives serirq low for 4 ? 8 clocks. this is the default mode after reset, and can be used to enter the quiet mode. data frame once the start frame has been initiated, all of the serial interrupt peripherals must start counting frames based on the rising edge of serirq. each of the irq/data frames has exactly three phases of one clock each: a sample phase, a recovery phase, and a turn-around phase. during the sample phase, the device drives serirq low if the corresponding interrupt signal should be active. if the corresponding interrupt is inactive, then the devices should not drive the serirq signal. it will remain high due to pull-up resistors. during the other two phases (turn around and recovery), no device should drive the serirq signal. the irq/data frames have a specific order and usage, as shown in table 26 . if an smi# is activated on frame 3, piix4 drives its extsmi# signal active. this then generates an smi# to the microprocessor, if enabled.
e 82371AB (piix4) 179 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 26 . serirq frames data frame number usage # clocks past start 1 unassigned 2 2 irq1 5 3 smi# 8 4 irq3 11 5 irq4 14 6 irq5 17 7 irq6 20 8 irq7 23 9 unassigned 26 10 irq9 29 11 irq10 32 12 irq11 35 13 irq12 38 14 unassigned 41 15 irq14 44 16 irq15 47 17 iochck# 50 18 pci inta# 53 19 pci intb# 56 20 pci intc# 59 21 pci intd# 62 32:22 unassigned 96 stop frame after all of the data frames, a stop frame is performed done by piix4. this is accomplished by making serirq low for 2 ? 3 clocks. the number of clocks determines the next mode: if serirq is low for 2 clocks, the next mode is the quite mode. any device may initiate a start frame in the second clock (or more) after the rising edge of the stop frame. if serirq is low for 3 clocks, the next mode is the continuous mode. only piix4 may initiate a start frame in the second clock (or more) after the rising edge of the stop frame.
82371AB (piix4) e 180 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.8. timer / counters piix4 contains three counters that are equivalent to those found in the 82c54 programmable interval timer. the three counters are contained in one piix4 timer unit, referred to as timer-1. each counter output provides a key system function. counter 0 is connected to interrupt controller irq0 and provides a system timer interrupt for a time-of-day, diskette time-out, or other system timing functions. counter 1 generates a refresh request signal and counter 2 generates the tone for the speaker. the 14.31818-mhz counters normally use osc as a clock source. counter 0, system timer this counter functions as the system timer by controlling the state of irq0 and is typically programmed for mode 3 operation. the counter produces a square wave with a period equal to the product of the counter period (838 ns) and the initial count value. the counter loads the initial count value one counter period after software writes the count value to the counter i/o address. the counter initially asserts irq0 and decrements the count value by two each counter period. the counter negates irq0 when the count value reaches 0. it then reloads the initial count value and again decrements the initial count value by two each counter period. the counter then asserts irq0 when the count value reaches 0, reloads the initial count value, and repeats the cycle, alternately asserting and negating irq0. counter 1, refresh request signal this counter provides the refresh request signal and is typically programmed for mode 2 operation. the counter negates refresh request for one counter period (838 ns) during each count cycle. the initial count value is loaded one counter period after being written to the counter i/o address. the counter initially asserts refresh request, and negates it for one counter period when the count value reaches 1. the counter then asserts refresh request and continues counting from the initial count value. counter 2, speaker tone this counter provides the speaker tone and is typically programmed for mode 3 operation. the counter provides a speaker frequency equal to the counter clock frequency (1.193 mhz) divided by the initial count value. the speaker must be enabled by a write to port 061h (see nmi status and control ports). 8.8.1. programming the int erval timer the counter/timers are programmed by i/o accesses and are addressed as though they are contained in one 82c54 interval timer. a single control word register controls the operation of all three counters. the interval timer is an i/o-mapped device. several commands are available: the control word command specifies: which counter to read or write the operating mode the count format (binary or bcd) the counter latch command latches the current count so that it can be read by the system. the countdown process continues. the read back command reads the count value, programmed mode, the current state of the out pins, and the state of the null count flag of the selected counter. the read/write logic selects the control word register during an i/o write when address lines a[1:0]=11. this condition occurs during an i/o write to port address 043h, the address for the control word register on timer 1. if the cpu writes to port 043h, the data is stored in the control word register and is interpreted as the control word used to define the operation of the counters.
e 82371AB (piix4) 181 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary the control word register is write only. counter status information is available with the read back command. because the timer counters wake up in an unknown state after power up, multiple refresh requests may be queued. to avoid possible multiple refresh cycles after power up, program the timer counter immediately after power up. write operations programming the interval timer is a simple process: 1. write a control word. 2. write an initial count for each counter. 3. load the least and/or most significant bytes (as required by control word bits 5, 4) of the 16-bit counter. the programming procedure for the piix4 timer is very flexible. only two conventions need to be observed. first, for each counter, the control word must be written before the initial count is written. second, the initial count must follow the count format specified in the control word (least significant byte only, most significant byte only, or least significant byte and then most significant byte). since the control word register and the three counters have separate addresses (selected by the a1, a0 inputs), and each control word specifies the counter it applies to (sc0, sc1 bits), no special instruction sequence is required. any programming sequence that follows the conventions above is acceptable. a new initial count may be written to a counter at any time without affecting the counter?s programmed mode. counting will be affected as described in the mode definitions. the new count must follow the programmed count format. if a counter is programmed to read/write 2-byte counts, the following precaution applies: a program must not transfer control between writing the first and second byte to another routine which also writes into that same counter. otherwise, the counter will be loaded with an incorrect count. interval timer control word format the control word specifies the counter, the operating mode, the order and size of the count value, and whether it counts down in a 16-bit or binary-coded decimal (bcd) format. after writing the control word, a new count may be written at any time. the new value will take effect according to the programmed mode. if a counter is programmed to read/write 2-byte counts, the following precaution applies: a program must not transfer control between writing the first and second byte to another routine which also writes into that same counter. otherwise, the counter will be loaded with an incorrect count. the count must always be completely loaded with both bytes. read operations it is often desirable to read the value of a counter without disturbing the count in progress. there are three possible methods for reading the counters: a simple read operation, the counter latch command, and the read back command.
82371AB (piix4) e 182 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary counter i/o port read the first method is to perform a simple read operation. to read the counter, which is selected with the a1, a0 inputs (port 040h, 041h, or 042h), the clk input of the selected counter must be inhibited by using either the gate input or external logic. otherwise, the count may be in the process of changing when it is read, giving an undefined result. when reading the count value directly, follow the format programmed in the control register: read lsb, read msb, or read lsb then msb. within the piix4 timer unit, the gate input on counter 0 and counter 1 is tied high. therefore, the direct register read should not be used on these two counters. the gate input of counter 2 is controlled through i/o port 061h. if the gate is disabled through this register, direct i/o reads of port 042h will return the current count value. counter latch command the counter latch command latches the count at the time the command is received. this command is used to ensure that the count read from the counter is accurate (particularly when reading a 2-byte count). the count value is then read from each counter?s count register as was programmed by the control register. the selected counter?s output latch (ol) latches the count at the time the counter latch command is received. this count is held in the latch until it is read by the cpu (or until the counter is reprogrammed). the count is then unlatched automatically and the ol returns to ? following ? the counting element (ce). this allows reading the contents of the counters ? on the fly ? without affecting counting in progress. multiple counter latch commands may be used to latch more than one counter. each latched counter?s ol holds its count until it is read. counter latch commands do not affect the programmed mode of the counter in any way. the counter latch command can be used for each counter in the piix4 timer unit. if a counter is latched and then, some time later, latched again before the count is read, the second counter latch command is ignored. the count read will be the count at the time the first counter latch command was issued. with either method, the count must be read according to the programmed format; specifically, if the counter is programmed for 2-byte counts, 2 bytes must be read. the 2 bytes do not have to be read one right after the other. read, write, or programming operations for other counters may be inserted between them. another feature of the piix4 timer is that reads and writes of the same counter may be interleaved. for example, if the counter is programmed for 2-byte counts, the following sequence is valid: read least significant byte. write new least significant byte. read most significant byte. write new most significant byte. if a counter is programmed to read/write 2-byte counts, a program must not transfer control between reading the first and second byte to another routine which also reads from that same counter. otherwise, an incorrect count will be read. read back command the third method uses the read back command. the read back command is used to determine the count value, programmed mode, and current states of the out pin and null count flag of the selected counter or counters. the read back command is written to the control word register, which causes the current states of the above mentioned variables to be latched. the value of the counter and its status may then be read by i/o access to the counter address.
e 82371AB (piix4) 183 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary the read back command may be used to latch multiple counter output latches (ol) by setting the count# bit d5=0 and selecting the desired counter(s). this single command is functionally equivalent to several counter latch commands, one for each counter latched. each counter?s latched count is held until it is read (or the counter is reprogrammed). once read, a counter is automatically unlatched. the other counters remain latched until they are read. if multiple count read back commands are issued to the same counter without reading the count, all but the first are ignored (i.e. the count which will be read is the count at the time the first read back command was issued). the read back command may also be used to latch status information of selected counter(s) by setting status# bit d4=0. status must be latched to be read. the status of a counter is accessed by a read from that counter?s i/o port address. if multiple counter status latch operations are performed without reading the status, all but the first are ignored. the status returned from the read is the counter status at the time the first status read back command was issued. both count and status of the selected counter(s) may be latched simultaneously by setting both the count# and status# bits [5:4]=00. this is functionally the same as issuing two consecutive, separate read back commands. the above discussions apply here also. specifically, if multiple count and/or status read back commands are issued to the same counter(s) without any intervening reads, all but the first are ignored. if both count and status of a counter are latched, the first read operation from that counter will return the latched status, regardless of which was latched first. the next one or two reads (depending on whether the counter is programmed for one or two type counts) return the latched count. subsequent reads return unlatched count. 8.9. real time clock the real time clock (rtc) module provides a date-and-time keeping device with alarm features and battery backed-up operation. the rtc counts seconds, minutes, hours, days, day of the week, date, month, and year with leap year compensation. daylight savings compensation is options. three interrupt features are available: time of day alarm with once a second to once a month range, periodic rates of 122 m s to 500 ms, and end of update cycle notification. the rtc contains 256 bytes of battery-backed static ram in two banks, namely, the standard bank and the extended bank. the standard bank contains 10 bytes indicating time and date information, 4 bytes used as four control register (a,b,c,d), and 114 bytes used as general purpose ram. the extended bank has 128 bytes used as general purpose ram. time, calendar, and alarm can be represented in either binary or bcd format. the format is determined by bit 2 of control register b. the hour is represented in 12 or 24 hour format and the format is selected by bit 1 of control register b. note that when changing the format, the time registers must be reinitialized to the corresponding data format. see control register b in the following section for more information on the configuration of the rtc functions. the rtc module requires an external oscillating source of 32.768 khz connected on the trcx1 and rtcx2 pins. this clock signal is then divided down to 1 hz signal. the divider chain is controlled by bits [6:4] of control register a. bits [3:0] of the control register a select one of the 15 taps from the divider chain to be used as a periodic interrupt. see control register a in the following section for divider configuration and rate selections. 8.9.1. rtc registers and r am the rtc internal registers and ram are organized as two banks of 128 bytes each, called the standard and extended banks. the first 14 bytes of the standard bank contain the rtc time and date information along with four registers, a ? d, that are used for configuration of the rtc. the extended bank contains a full
82371AB (piix4) e 184 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 128 bytes of battery backed sram, and will be accessible even when the rtc module is disabled (via the rtc configuration register). all data movement between the host cpu and rtc is done through registers mapped to the isa i/o space at locations 70 ? 73h. i/o locations 70h and 71h are the standard isa location for the rtc. the map for this bank is shown in table 27 . locations 72h and 73h are for accessing the extended ram, and may be disabled. the first 10 bytes contain information about date and time. it is up to the programmer to make sure that data stored in these locations is within the reasonable values and represents a possible date and time. the exception to these ranges is to store a value of c0h - ffh in the alarm bytes to indicate a ? don?t care ? situation. note that bit 7 (uip) of control register a should be read as 0 before each access to these locations. bit 7 (set) of control register b should be 1 while programming these locations to avoid clashes with an update cycle. the extended ram bank is also accessed using an indexed scheme. isa i/o address 72h is used as the address pointer and isa i/o address 73h is used as the data register. index addresses above 127h are not valid. the internal rtc registers can only be accessed by pci masters. isa master access is not supported. table 27 . rtc (standard) ram bank index address name 00h seconds 01h seconds alarm 02h minutes 03h minutes alarm 04h hours 05h hours alarm 06h day of week 07h date of month 08h month 09h year 0ah register a 0bh register b 0ch register c 0dh register d 0eh ? 7fh 114 bytes of user ram
e 82371AB (piix4) 185 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.9.1.1. control register a address offset: 0ah default value: na (this register is not affected by any system reset signal.) attribute: read/writ e this register is used for general configuration of the rtc functions. bits description 7 update in progress (uip). this bit may be monitored as a status flag. 1=signifies that the update of the timing registers is soon to occur or is in progress. 0=signifies that the update cycle will not start for at least 244 s. the time, calendar, and alarm information in ram is always available when the uip bit is 0. 6:4 division chain select (dvx). these three bits control the divider chain for the oscillator. dv2 dv1 dv0 function 0 1 0 normal operation 1 1 x divider reset 1 0 1 bypass 15 stages (test mode only) 1 0 0 bypass 10 stages (test mode only) 0 1 1 bypass 5 stages (test mode only) 0 1 1 invalid 0 0 0 invalid 3:0 rate select bits (rsx). selects one of 13 taps of the 15 stage divider chain. the selected tap can generate a periodic interrupt if the pie bit is set in register b. otherwise, this tap sets the pf flag of register c. if the periodic interrupt is not to be used, these bits should all be set to 0. bits[3:0] periodic rate bits[3:0] periodic rate 0000 none 1000 3.90625 ms 0001 3.90625 ms 1001 7.8125 ms 0010 7.8125 ms 1010 15.625 ms 0011 122.070 m s 1011 31.25 ms 0100 244.141 m s 1100 62.5 ms 0101 488.281 m s 1101 125 ms 0110 976.5625 m s 1110 250 ms 0111 1.953125 ms 1111 500 ms
82371AB (piix4) e 186 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.9.1.2. control register b address offset: 0bh default value: x0000xxxb attribute: read/write this register is used for general configuration of the rtc functions. bits description 7 set. enables the update cycles. 1=a current time update cycle will be aborted, and subsequent update cycles will not occur until set is returned to 0. when set=1, bios may initialize time and calendar bytes safely. 0=time update cycle occurs normally once a second. this bit is not affected by rsmrst#. 6 periodic interrupt enable (pie). 1=enables the generation of the periodic interrupt. the rate of the periodic interrupt is determined by bits 3:0 of control register a. 0=disables the generation of the periodic interrupt. this bit is cleared (set to 0) on active rsmrst#. 5 alarm interrupt enable (aie). 1=enables the generation of the alarm interrupt. the alarm interrupt occurs immediately after a time update of the seconds, minutes, hours which match the alarm setting. an alarm can occur once a second, one an hour, once a day, or one a month. 0=disables the generation of the alarm interrupt. this bit is cleared on active rsmrst#. 4 update-ended interrupt enable (uie). 1=enables the generation of the update-ended interrupt which occurs when the update cycle ends. 0=disables the generation of the updated-ended interrupt. this bit is cleared on active rsmrst#. 3 square wave enable (sqwe). the square wave enable bit serves no function in this device, yet is left in this register bank to provide compatibility with the motorola 146818b. there is not sqw pin on this device. this bit is cleared on active rsmrst#. 2 data mode (dm). 1=binary. 0=bcd. the data mode (dm) bit specifies either binary or bcd data representation. this bit is not affected by rsmrst#. 1 hour format (hf). 1=24-hour mode. 0=12-hour mode. this bit indicates the hour byte format. in 12 hour mode, the seventh bit represents am as 0 and pm as 1. this bit is not affected by rsmrst#. 0 daylight savings enable (dse). 1=enable. 0=disable. when dse=1, daylight savings is enabled on two special hour updates per year. one is on the first sunday in april, where time increments from 1:59:59 am to 3:00:00 am. the other is the last sunday in october when the time first reaches 1:59:59 am, it is changed to 1:00:00 am. the time must increment normally for at least two update cycles (seconds) previous to these conditions for the time change to occur properly. these special update conditions do not occur when the dse bit is set to 0. the days for the hour adjustment are those specified in united states federal law as of 1987, which is different than previous years. this bit is not affected by rsmrst#.
e 82371AB (piix4) 187 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.9.1.3. control register c address offset: 0ch default value: 0 0h attribute: read/write this register is used for various flags. all flag bits are cleared upon active rsmrst# or a read of register c. bits description 7 interrupt request flag (irqf). interrupt request flag=pf * pie + af * aie + uf *ufe. this also causes the ch_irq_b signal to be asserted. 6 periodic interrupt flag (pf). periodic interrupt flag is 1 when the tap as specified by the rs bits of register a is 1. if no taps are specified, this flag bit will remain at 0. 5 alarm flag (af). 1=all alarm values match the current time. 4 update-ended flag (uf). uf=1 immediately following an update cycle for each second. 3:0 reserved. read as 0. 8.9.1.4. control register d address offset: 0dh default value: na (this register is not affected by any system reset signal.) attribute: read/write this register is used for various flags. bits description 7 valid ram and time bit (vrt). this bit is set to 1 when the pwrgd signal is asserted. this feature is not typically used. this bit should always be set to 0 during a write to this register. 6 reserved. this bit always returns a 0 and should be set to 0 during register writes. 5:0 date alarm (da). these bits store the date of month alarm value. if set to 000000, a ?don?t care? state is assumed. the host must configure the date alarm for these bits to operate, even though the bits can be written at any time. if the date alarm is not enabled, these bits will return zeros to mimic the functionality of the motorola* 146818b. these bits are not affected by rsmrst#.
82371AB (piix4) e 188 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.9.2. rtc update cycle an update cycle occurs once a second, if the set bit of register b is not set to 1 and the divide chain is properly configured. during this procedure, the stored time and date are incremented, overflow checked, a matching alarm condition is checked, and the time and date are rewritten to the ram locations. the update cycle will start at least 244 m s after the uip bit of register a is set to 1, and the entire cycle does not take more than 1984 m s to complete. the time and date ram locations (0 ? 9) are disconnected from the external bus during this time. to avoid update and data conditions, external ram access to these locations can safely occur at two times. when an updated-ended interrupt is detected (almost 999 ms is available to read and write valid time and date data). if the uip bit of register a is detected to be low, there is at least 244 m s before the update cycle begins. because the overflow conditions for leap years and daylight savings adjustments are based on more than one date or time item, the time before one of these conditions should be set (when adjusting) at least 2 seconds before one of these conditions to ensure proper operation. 8.9.3. rtc interrupts the real-time clock interrupt is connected to isa irq8#, and is internally routed within piix4. if the rtc module is not enabled, the gpi6 signal is available as the irq8# input. 8.9.4. lockable ram ranges the real-time clock battery-backed ram supports two 8-byte ranges that can be enabled via the configuration space. if the configuration bits are set, the corresponding range in the ram will not be readable or writeable. a write cycle to these locations have no effect. a read cycle to these locations do not return the actual location value. once enabled, this function can only be disabled by a hard reset. 8.9.5. rtc external connec tions rtc crystal the rtc modules requires an externally connected crystal on the rx1 and rx2 pins. rtc battery the rtc modules requires an external battery connection to maintain the rtc block while piix4 is not powered by the system. battery characteristics: minimum voltage: 2.0v recommended batteries: duracell 2032, 2025, or 2016 the battery must also be connected to piix4 via isolation diodes. this is both a chip-design requirement, as well as a ul requirement. the diode circuit allows the rtc-well to be powered by the battery when system power is not available, but by the system power when it is available. this is done by setting the diode to be reverse biased when system power is not available. 8.10. x-bus support piix4 provides positive decode (chip selects) and x-bus buffer control (xdir# and xoe#) for a real time clock, keyboard, bios, and two programmable io ranges for pci and isa initiated cycles. piix4 also generates rtcale (address latch enable) for the rtc. the chip selects are generated combinatorially from the isa
e 82371AB (piix4) 189 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary sa(16:0) and la(23:17) address lines (note that it is assumed that isa masters drive sa(19:16) and la(23:17) low when accessing i/o devices). piix4 also provides ps/2 mouse support via the irq12/m signal and coprocessor functions (ferr# and ignne#). the chip selects and x-bus buffer control lines can be enabled/disabled via the xbcs register. coprocessor error function this function provides coprocessor error support for the cpu and is enabled via the xbcs register. ferr# is tied directly to the coprocessor error signal of the cpu. if ferr# is driven active to piix4, an internal irq13 is generated and the intr output from piix4 is driven active. when a write to i/o location f0h is detected, piix4 negates irq13 (internal to piix4) and drives ignne# active. ignne# remains active until ferr# is driven inactive. note, that ignne# is not driven active unless ferr# is active. mouse function when the mouse interrupt function is enabled (via the xbcs register), the mouse interrupt function is provided on the irq12/m input signal. in this mode, a mouse interrupt generates an interrupt through irq12 to the host cpu. piix4 informs the cpu of this interrupt via an intr. a read of 60h releases irq12. if the mouse interrupt function is disabled, a read of address 60h has no effect on irq12/m. reads and writes to this register flow through to the isa bus. for additional information, see the irq12/m description in the signal description. 8.11. reset support piix4 integrates the system reset logic for the system. piix4 generates cpurst, pcirst#, and rstdrv during power up (pwrok) and when a hard reset is initiated through the rc register, as well as during certain power management resume operations. the following piix4 signals interface directly to the processor: cpurst intr nmi ignne# smi# stpclk# slp# these signals are open drain. thus, external logic is not required for interfacing with the processors based on 2.5v technology which do not support 3.3v tolerant input buffers.
82371AB (piix4) e 190 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 8.12. stand-alone i/o apic support piix4 supports a stand-alone i/o apic device on the isa x-bus. piix4 provides a chip select signal (apiccs#) for the i/o apic. it also provides handshake signals to maintain buffer coherency in the i/o apic environment. apiccs# is generated when the pci memory cycle address matches the apic?s programmed address and the apiccs# function is enabled in the xbcs register. the apic address can be relocated by programming the apic base address register (apicbase). apiccs# is only generated for pci originated cycles and is not generated for isa originated cycles. this pci cycle is forwarded to the isa bus. to avoid address aliasing conflicts with other isa devices, piix4 drives sa[19:16] and la[23:17] to 0 and drives sa[15:0] corresponding to pci ad[15:2] and c/be[3:0]#. when the apiccs# function is enabled, the xoe#/xdir# signals controlling the x-bus transceiver are also enabled during accesses to the i/o apic.
e 82371AB (piix4) 191 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 9. 0. ide controller functional description piix4 integrates a high performance interface from pci to ide. this interface is capable of accelerated pio data transfers as well as acting as a pci bus master on behalf of an ide dma slave device. piix4 provides an interface for either primary and secondary ide connectors or primary drive 0 and primary drive 1 ide connectors. all the ide data transfer command strobes, dma request and grant signals, iordy signal, address lines, and data lines interface directly to piix4. two full sets of signals are provided to enhance electrical isolation capabilities. only pci masters have access to the ide port. isa bus masters cannot access the ide i/o port addresses. memory targeted by the ide interface acting as a pci bus master on behalf of ide dma slaves must reside on pci, usually main memory implemented by the host-to-pci bridge. the following descriptions of piix4 ide signals may sometimes omit the primary (p) or secondary (s) prefix. these descriptions apply to both sets of ide signals. for example, references to iordy apply to both piordy and siordy. 9.1. ide signal configuration piix4 has two features that support a number of physical configuration options for system designers. 1. piix4 has two completely separate ide channels. there are no shared signals between the two interfaces. this improves signal timings and allows separate power management monitoring of both channels. each channels signals can be completely tri-stated or isolated. this allows individual power down of ide devices on separate channels. it can also be used to allow another device to drive the signal lines. this is useful for swap-bay implementations where a system designer may have different types of devices inserted into the bay (such as ide device or floppy drive). 2. piix4 ide channels can also be configured to support four devices in a primary and secondary channel configuration or to support two devices in a primary drive 0 and primary drive 1 channel configuration. the second configuration allows for the power management of individual devices and is very useful in a mobile environment. figure 6 and figure 7 show these configuration options. ide data and control piix4 swap bay device (ide or floppy) floppy data and control ide data and control ide_swap figure 6 . piix4 ide swap bay example
82371AB (piix4) e 192 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary primary drive 0 ide data and control piix4 primary drive 1 ide data and control primary ide data and control piix4 secondary ide data and control ide_conf figure 7 . piix4 ide configurations 9.2. ata register block decode the ide ata i/o ports are decoded by piix4 when enabled in the pcicmd and idetim registers for function 1. (ata stands for ? at attachment ? ? the specification for at compatible drive interfaces.) the actual ata registers are implemented in the drive itself. an access to the ide registers results in the assertion of the appropriate chip select for the register. the transaction is then run using compatible timing using the ide command strobes (dior#, diow#). for each cable (primary and secondary), there are two i/o ranges; the command block that corresponds to the cs1x# chip select, and the control block that corresponds to the cs3x# chip select. the command block is an 8- byte range while the control block is a 4-byte range. the upper 16 bits of the i/o address are decoded as all 0s. primary command block offset: 01f0h primary control block offset: 03f4h secondary command block offset: 0170h secondary control block offset: 0374h table 28 specifies the registers as they affect the piix4 hardware definition.
e 82371AB (piix4) 193 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 28 . ide legacy i/o port definition: command block (cs1x# chip select) io offset register function (read / write) access 00h data r/w 01h error/features r/w 02h sector count r/w 03h sector number r/w 04h cylinder low r/w 05h cylinder high r/w 06h drive/head r/w 07h status/command r/w the data register is accessed as a 16-bit register for pio transfers (except for ecc bytes). all other registers are accessed as 8-bit quantities. table 29 . ide legacy i/o port definition: control block (cs3x# chip select) io offset register function (read / write) access 00h reserved reserved 01h reserved reserved 02h alt status/device control r/w 03h forward to isa (floppy) r/w piix4 claims all accesses to these ranges, if enabled. the byte enables do not have to be externally decoded to assert devsel#. accesses to byte 3 of the control block are forwarded to isa where the floppy disk controller responds. each of the two drives (drive 0 or 1) on a cable implement separate ata register files. to determine the targeted drive, piix4 shadows the value of bit 4 (drive bit) of byte 6 (drive/head register) of the ata command block (cs1x#) for each of the two ide connectors (primary and secondary). 9.3. pio ide transactions the piix4 ide controller includes both compatible and fast timing modes. the fast timing modes can be enabled only for the ide data ports. all other transactions to the ide registers are run in single transaction mode with compatible timings. the piix4 ide signals are controlled with the granularity of the pci clock. up to two ide devices may be attached per ide connector (drive 0 and drive 1). the idetim and sidetim registers permit different timing modes to be programmed for drive 0 and drive 1 of the same connector. the ultra dma/33 synchronous dma timing modes can also be applied to each drive by programming the sdmactl and sdmatim registers. when a drive is enabled for synchronous dma mode operation, the dma
82371AB (piix4) e 194 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary transfers are executed with the synchronous dma timings. the pio transfers are executed using compatible timings or fast timings if also enabled. pio ide timing modes ide data port transaction latency consists of startup latency, cycle latency, and shutdown latency. startup latency is incurred when a pci master cycle targeting the ide data port is decoded and the da[2:0] and csxx# lines are not set up. startup latency provides the setup time for the da[2:0] and csxx# lines prior to assertion of the read and write strobes (dior# and diow#). cycle latency consists of the i/o command strobe assertion length and recovery time. recovery time is provided so that transactions may occur back-to-back on the ide interface (without incurring startup and shutdown latency) without violating minimum cycle periods for the ide interface. the command strobe assertion width for the enhanced timing mode is selected by the idetim register and may be set to 2, 3, 4, or 5 pci clocks. the recovery time is selected by the idetim register and may be set to 1, 2, 3, or 4 pci clocks. if iordy is asserted when the initial sample point is reached, no wait states are added to the command strobe assertion length. if iordy is negated when the initial sample point is reached, additional wait states are added. since the rising edge of iordy must be synchronized, at least two additional pci clocks are added. shutdown latency is incurred after outstanding scheduled ide data port transactions (either a non-empty write post buffer or an outstanding read prefetch cycles) have completed and before other transactions can proceed. it provides hold time on the da[2:0] and csxx# lines with respect to the read and write strobes (dior# and diow#). shutdown latency is 2 pci clocks in duration. the ide timings for various transaction types are shown in table 30 . note that bit 2 (16-bit i/o recovery enable) of the isa i/o recovery timer register does not add wait states to ide data port read accesses when any of the fast timing modes are enabled. table 30 . ide transaction timings (pci clocks) ide transaction type startup latency isp rct shutdown latency non-data port compatible 4 11 22 2 data port compatible 3 6 14 2 fast timing mode 2 2 ? 5 1 ? 4 2 iordy masking the iordy signal can be ignored and assumed asserted at the first iordy sample point (isp) on a drive by drive basis via the idetim register. pio 32-bit ide data port accesses a 32-bit pci transaction run to the ide data address (01f0h primary, 0170h secondary) results in two back-to- back 16-bit transactions to the ide data port. the 32-bit data port feature is enabled for all timings, not just enhanced timing. for compatible timings, a shutdown and startup latency is incurred between the two 16-bit halves of the ide transaction. this guarantees that the chip selects will be negated for at least 2 pci clocks between the two cycles. pio ide data port prefetching and posting
e 82371AB (piix4) 195 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary piix4 can be programmed via the idetim registers to allow data to be posted to and prefetched from the ide data ports. data prefetching is initiated when a data port read occurs. the read prefetch eliminates latency to the ide data ports and allows them to be performed back to back for the highest possible pio data transfer rates. the first data port read of a sector is called the demand read. subsequent data port reads from the sector are called prefetch reads. the demand read and all prefetch reads must be of the same size (16 or 32 bits). data posting is performed for writes to the ide data ports. the transaction is completed on the pci bus after the data is received by piix4. piix4 then runs the ide cycle to transfer the data to the drive. if the piix4 write buffer is non-empty and an unrelated (non-data or opposite channel) ide transaction occurs, that transaction will be stalled until all current data in the write buffer is transferred to the drive. 9.4. bus master function piix4 can act as a pci bus master on behalf of an ide slave device. two pci bus master channels are provided, one channel for each ide connector (primary and secondary). by performing the ide data transfer as a pci bus master, piix4 off-loads the cpu and improves system performance in multitasking environments. both devices attached to a connector can be programmed for bus master transfers, but only one channel per connector can be active at a time. physical region descriptor format the physical memory region to be transferred is described by a physical region descriptor (prd). the prds are stored sequentially in a descriptor table in memory (figure 8 ). the data transfer proceeds until all regions described by the prds in the table have been transferred. note that the piix4 bus master ide function does not support memory regions or descriptor tables located on isa. descriptor tables must be aligned on 64-kbyte boundaries. each prd entry in the table is 8 bytes in length. the first 4 bytes specify the byte address of a physical memory region. this memory region must be dword aligned and must not cross a 64-kbyte boundary. the next 2 bytes specify the size or transfer count of the region in bytes (64-kbyte limit per region). a value of 0 in these 2 bytes indicates 64 kbytes (thus the minimum transfer count is 1). if bit 7 (eot) of the last byte is a 1, it indicates that this is the final prd in the descriptor table. bus master operation terminates when the last descriptor has been retired. when the bus master ide controller is reading data from the memory regions, bit 1 of the base address is masked and byte enables are asserted for all read transfers. the controller reads to a boundary of 64 bytes, regardless of byte count field of the prd. however, only the byte count value is transferred to the drive. when writing data, bit 1 of the base address is not masked and if set, causes the lower word byte enables to be negated for the first dword transfer. the write to pci typically consists of a 32-byte cache line. if valid data ends prior to end of the cache line, the byte enables are negated for invalid data. the total sum of the byte counts in every prd of the descriptor table must be equal to or greater than the size of the disk transfer request. if greater than the disk transfer request, the driver must terminate the bus master transaction (by setting bit 0 in the bus master ide command register to 0) when the drive issues an interrupt to signal transfer completion.
82371AB (piix4) e 196 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary memory region physical base address [31:1] eot byte 3 byte 2 byte 1 byte 0 0 main memory memory region byte count [15:01] 0 reserved ide_desc figure 8 . physical region descriptor table entry operation to initiate a bus master transfer between memory and an ide dma slave device, the following steps are required: 1. software prepares a prd table in main memory. each prd is 8-bytes long and consists of an address pointer to the starting address and the transfer count of the memory buffer to be transferred. in any given prd table, two consecutive prds are offset by 8 bytes and are aligned on a 4-byte boundary. 2. software provi des the starting address of the prd table by loading the prd table pointer register. the direction of the data transfer is specified by setting the read/write control bit. clear the interrupt bit and error bit in the status register. 3. software issues the appropriate dma transfer command to the disk device. this includes the total amount of data to be transferred. 4. engage the bus master function by writing a 1 to the start bit in the bus master ide command register for the appropriate channel. the first entry in the prd table is fetched by piix4. the channel remains masked until the first descriptor is loaded. 5. the controller transfers data to or from memory responding to the dma requests from the ide device. when the last data transfer for a memory region has been completed on the ide interface, the next prd is fetched from the table. the controller then begins transferring data to or from that prd?s memory region. 6. the ide device signals an interrupt once its programmed data count has been transferre d. the ide device will also negate its dma request signal, causing piix4 to stop transferring data. if piix4 has also transferred the final data from the last prd memory region, it will reset the bmidea bit in the status register and mask the dma request signal from the drive. 7. in response to the interrupt, software resets the start/stop bit in the command register. it then reads the controller status and then the drive status to determine if the transfer completed successfully. see the bus master ide status register section for a description of controller transfer status.
e 82371AB (piix4) 197 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary line buffer a single line buffer exists for the piix4 bus master ide interface. this buffer is not shared with any other function. the buffer is maintained in either the read state or the write state. memory writes are typically 4-dword bursts and invalid dwords have c/be[3:0]#=0fh. the line buffer allows burst data transfers to proceed at peak transfer rates. the bus master ide active bit in bus master ide status register is reset automatically when the controller has transferred all data associated with a descriptor table (as determined by eot bit in last prd). the ide interrupt status bit is set when the ide device generates an interrupt. these events may occur prior to line buffer emptying for memory writes. if either of these conditions exist, all pci master non-memory read accesses to piix4 are retried until all data in the line buffers has been transferred to memory. bus master ide timings the timing modes used for bus master ide transfers are identical to those for pio transfers. the dma timing enable only bits in ide timing register can be used to program fast timing mode for dma transactions only. this is useful for ide devices whose dma transfer timings are faster that its pio transfer timings. the ide device dma request signal is sampled on same pci clock that the io strobe is negated. if inactive, the dma acknowledge signal is negated on the next pci clock and no more transfers take place until dma request is again asserted. 9.5. ? ultra dma/33 ? synchronous dma operation ultra dma/33 is a new physical protocol used to transfer data between an ultra dma/33 capable ide controller such as piix4 and one or more ultra dma/33 capable ide devices. it utilizes the standard bus master ide functionality and interface to initiate and control the transfer. ultra dma/33 utilizes a ? source synchronous ? signaling protocol to transfer data at rates up to 33 mbytes/sec. the ultra dma/33 definition also incorporates a cyclic redundancy checking (crc-16) error checking protocol. crc-16 only has the ability for detecting errors, not correcting them. signal descriptions the ultra dma/33 protocol requires no extra signal pins on the ide connector. it does redefine a number of the standard ide control signals when in ultra dma/33 mode. these redefinitions are shown in table 31 . read cycles are defined as transferring data from the ide device to piix4. write cycles are defined as transferring data from piix4 to ide device. table 31 . ultra dma/33 control signal redefinitions standard ide signal definition ultra dma/33 read cycle definition ultra dma/33 write cycle definition piix4 primary channel signal piix4 secondary channel signal diow# stop stop pdiow# sdiow# dior# dmardy# strobe pdior# sdior# iordy strobe dmardy# piordy siordy the diow# signal is redefined as stop for both read and write transfers. this is always driven by piix4 and is used to request that a transfer be stopped or as an acknowledgment to stop a request from ide device.
82371AB (piix4) e 198 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary the dior# signal is redefined as dmardy# for transferring data from the ide device to piix4 (read). it is used by piix4 to signal when it is ready to transfer data and to add wait states to the current transaction. the dior# signal is redefined as strobe for transferring data from piix4 to the ide device (write). it is the data strobe signal driven by piix4 on which data is transferred during each rising and falling edge transition. the iordy signal is redefined as strobe for transferring data from the ide device to piix4 (read). it is the data strobe signal driven by the ide device on which data is transferred during each rising and falling edge transition. the iordy signal is redefined as dmardy# for transferring data from piix4 to the ide device (write). it is used by the ide device to signal when it is ready to transfer data and to add wait states to the current transaction. all other signals on the ide connector retain their functional definitions during ultra dma/33 operation. operation initial setup programming consists of enabling and performing the proper configuration of piix4 and the ide device for ultra dma/33 operation. for piix4, this consists of enabling synchronous dma mode and setting up appropriate synchronous dma timings. when ready to transfer data to or from an ide device, the bus master ide programming model is followed. once programmed, the drive and piix4 control the transfer of data via the ultra dma/33 protocol. the actual data transfer consists of three phases, a startup phase, a data transfer phase, and a burst termination phase. the ide device begins the startup phase by asserting dmarq signal. when ready to begin the transfer, piix4 asserts dmack# signal. when dmack# signal is asserted, the host controller drives cs0# and cs1# inactive, da0 ? da2 low, and the ide device drives iocs16# inactive. for write cycles, piix4 negates stop, waits for the ide device to assert dmardy#, and then drives the first data word and strobe signal. for read cycles, piix4 tri-states the dd lines, negates stop, and asserts dmardy#. the ide device then sends the first data word and strobe. the data transfer phase continues the burst transfers with the data transmitter (piix4 writes, ide device reads) providing data and toggling strobe. data is transferred (latched by receiver) on each rising and falling edge of strobe. the transmitter can pause the burst by holding strobe high or low, resuming the burst by again toggling strobe. the receiver can pause the burst by negating dmardy# and resumes the transfers by asserting dmardy#. piix4 pauses a burst transaction to prevent an internal line buffer over or under flow condition, resuming once the condition has cleared. it may also pause a transaction if the current prd byte count has expired, resuming once it has fetched the next prd. the current burst can be terminated by either the transmitter or receiver. a burst termination consists of a stop request, stop acknowledge and transfer of crc data. a burst must first be paused as described above before it can be terminated. piix4 can then stop the burst by asserting stop, with the ide device acknowledging by negating dmarq. the ide device can then stop the burst by negating dmarq and piix4 acknowledges by asserting stop. the transmitter then drives the strobe signal to a high level. piix4 then drives the crc value onto the dd lines and negate dmack#. the ide device latches the crc value on rising edge of dmack#. piix4 terminates a burst transfer if it needs to service the opposite ide channel, if a programmed i/o (pio) cycle is executed to the ide channel currently running the burst, or upon transferring the last data from the final prd. crc calculation cyclic redundancy checking (crc-16) is used for error checking on ultra dma/33 transfers. the crc value is calculated for all data by both piix4 and the ide device over the duration of the ultra dma/33 burst transfer segment. this segment is defined as all data transferred with a valid strobe edge from ddack# assertion to ddack# negation. at the end of the transfer burst segment, piix4 drives the crc value onto the dd[15:0] signals. it is then latched by the ide device on negation of ddack#. the ide device compares the piix4 crc value to its own and reports an error if their is a mismatch.
e 82371AB (piix4) 199 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary synchronous dma timings the timings for ultra dma/33 are programmed into the ultra dma/33 timing register. the programmable timings include cycle time (ct) and ready to pause (rp) time. the cycle time represents the minimum pulse width of active data strobe (strobe) signal. the ready to pause time represents the number of pci clocks piix4 waits from negation of dmardy# to the assertion of stop when it desires to stop a burst read transaction. 10. 0. usb host controller functional description piix4 contains a usb host controller (hc). the host controller includes the root hub with two usb ports. this permits connection of two usb peripheral devices directly to piix4 without an external hub. if more devices are required, an external hub can be connected to either of the built-in ports. the usb?s pci configuration registers are located in function 2, pci configuration space. the piix4 host controller completely supports the standard universal host controller interface (uhci) and thus, takes advantage of the standard software drivers written to be compatible with uhci. figure 9 shows a conceptual view of a usb system. uhci consists of two parts ? host controller driver (hcd) and host controller (hc). the host controller interfaces to the usb system software in the host via the hcd. the hcd software manages the host controller operation and is responsible for scheduling the traffic on usb by posting and maintaining transactions in system memory. hcd is part of the system software and is typically provided by the operating system vendor. hcd provides the software layer between the piix4?s host controller and the usbd software layer (also located in the operating system). the uhci?s hcd software interprets requests from the usbd and builds frame list, transfer descriptor, queue head, and data buffer data structures for the host controller. the data structures are built in system memory and contain all necessary information to provide end-to-end communication between client software in the host and devices on the usb. the piix4?s host controller moves data between system memory and devices on the usb by processing these data structures and generating the transaction on usb. the host controller executes the schedule lists generated by hcd and reports the status of transactions on the usb to hcd. command execution includes generating serial bus token and data packets based on the command and initiating transmission on usb. for commands that require the host controller to receive data from the usb device, the host controller receives the data and then transfers it to the system memory pointed to by the command. the uhci?s hcd provides sufficient commands and data to keep ahead of the host controller execution and analyzes the results as the commands are completed. for additional information on the functionality of piix4 usb host controller, refer to the universal host controller interface (uhci) design guide, revision 1.1 available from intel literature center with order number 297650- 002. note that the uhci design guide refers to usb ports 1 and 2. the piix4 usb ports are ports 0 and 1 respectively. additions to the piix4 usb interface beyond uhci, revision 1.1 include support for over-current detection on usb ports 0 and 1. if an over-current condition is detected on a usb port, that port will be disabled. bits 10:11 in each port status and control register are used to report over-current conditions.
82371AB (piix4) e 200 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary client software universal serial bus driver (usbd) universal host controller driver (hcd) piix4 universal host controller (hc) usb device usb device usb usb universal host controller interface (uhci) hardware software usb_blk figure 9 . usb system conceptual view
e 82371AB (piix4) 201 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11. 0. power management functional description 11.1. power management overview the piix4 power management function provides a wide range of capabilities and configuration options allowing a system designer to implement a wide range of power saving modes. piix4 provides for four main areas of power management: clock control and processor complex management peripheral device management system management (smi generation, system management bus) system suspend and resume piix4 uses several mechanisms to help the power management software initiate and manage the transitions between the power managed states. these include system-wide and peripheral event monitors to identify idle and wake-up conditions, intel?s system management interrupt (smi#) support, advanced power management (apm) 1.2 interface, pentium and pentium ii processor stpclk# and slp# clock control, suspend/resume hardware, and system management bus. piix4 supports the advanced configuration and power interface (acpi) specification. system power management functions under a combination of both hardware and software control. the software consists of system management mode (smm) bios for legacy control and operating system (os) for acpi. the basic operation consists of software setting up the desired configuration and power management mode and corresponding power savings level. the hardware then performs the necessary actions to maintain the power mode. piix4 also monitors the system for events which may require changing the system power mode. when one of these events is detected, piix4 informs the software, which makes the decision to change power modes. this is done by a system management interrupt (smi#) for legacy smm bios or a system control interrupt (sci) for acpi os. brief descriptions of primary power management functions follow. more complete descriptions are provided later in this section. clock control: when the operating system, application program, or system software is not performing useful work, the processor complex (processor, host bridge, dram, l2 cache) does not need to be executing cycles and, therefore, can be placed in a standby mode. flexible stpclk# mechanism for host clock control throttling: stpclk# duty cycle control for low frequency emulation stop grant state: with processor clock input running stop clock state: with processor clock input stopped clock wake-up (clock break events) from interrupts, device monitors, bus activity. burst mechanism for hardware-controlled return to standby fast and slow burst timers pci clock control (clkrun#) is independent from host clock control. sram zz mode for l2 power management during standby. thermal management input for clock throttling during critical thermal condition. peripheral device management: peripheral device resources are monitored to detect when a specific device is idle. piix4 then informs system power management software, which can place that individual device
82371AB (piix4) e 202 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary into a power managed condition (such as local standby or powered off). accesses targeting that device are then monitored. when detected, an smi# is generated to allow the software to restore the device to operation. 14 distinct device monitors and idle timers for various system devices four generic device monitors can monitor devices on pci or isa bus can monitor general purpose inputs i/o smi# traps with i/o cycle restart timing device address ranges can be used to forward cycles to isa bus system management: in addition to individual devices, piix4 provides capabilities to monitor other events within the system, including an external power button, notebook lid or other type of switch, global system activity, thermal alarm input, countdown timers, and smbus message generation and receipt. these events can generate an smi to the processor allowing the software to manage system as necessary. system suspend: once the power management software has determined that the system is fully idle or that a critical system event has occurred, it can place the system into a suspend state, which allows for increased power savings. the software configures piix4 for the type of suspend, types of resume or wake-up events, and then piix4 automatically transitions the system into suspend. when an enabled resume event is detected, piix4 automatically restores the system to operation. three suspend states power-on-suspend (pos) with three system reset options suspend-to-ram (str) suspend-to-disk (std) or soff off (soff) global standby timer (also active during suspend) to monitor for overall system idleness and as a resume timer power button input (pwrbtn#) override feature forcing immediate transition to soft off battery low indication pin (batlow#) shadow registers for standard at write only registers to save and restore system state information ? resume well ? to monitor wake-up events during suspend resume power and reset sequencing 11.2. clock control piix4 provides the ability to separately control the system host clocks and pci clocks. the host clock control primarily uses the processor clock control features, but adds unique capabilities to allow for more flexible and robust power management. it supports both the pentium processor stop grant and stop clock states, as well as the pentium ii processor stop grant and sleep states or quick start and deep sleep states. the pci clock control follows the clock run mechanism as described in the pci mobile design guide. an example system configuration is shown in figure 10 . 11.2.1. host clock control mechanisms piix4 support four primary host clock control mechanisms, with three types of variations. system events can be monitored to break out of clock control modes or to generate burst execution. software enables clock control
e 82371AB (piix4) 203 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary by setting [cc_en] bit along with other optional control bits. table 32 details register bit settings required to place the piix4 clock control into the various modes of operation. figure 11 and figure 12 give examples of various clock control conditions. primary mechanisms stop grant or quick start sleep stop clock deep sleep variations manual throttle thermal throttle stop break and burst execution cpu host-to-pci bridge piix4 clkrun# pci bus pclk susclk system pll stp_cpu# stp_pci# susa# tag sram dram pclk hclk hclk stpclk#, slp# susa# l2 cache main memory clk_cntr figure 10 . clock control
82371AB (piix4) e 204 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 32 . clock control programming modes clock control mode register read cc_en stp_clk_en sleep_en tht_en thermal throttle x x x x disable clock control 0 x x x stop grant / quick start without throttle lvl 2 1 x x 0 stop grant / quick start with throttle lvl 2 1 x x 1 reserved lvl 3 1 0 0 x sleep lvl 3 1 0 1 x stop clock lvl 3 1 1 0 x deep sleep lvl 3 1 1 1 x enable burst execution 1 lvl 3 1 x x x notes: 1. burst execution is enabled for any of the above modes (except disabled and thermal throttle) if brst_en bit is set. stop grant or quick start state: initiated by a read to the lvl2 register, the stpclk# signal is asserted and piix4 waits for the processor to issue a stop grant bus cycle. when stop grant cycle is terminated, piix4 asserts the zz pin to the l2 sram, if the [zz_en] bit is set. piix4 does not assert the cpu_stp# signal and the host clocks remain running in this state. in this state, the processor disables clocks to portions of its internal logic, but is able to snoop host bus cycles in order to maintain cache coherency. to exit this state, piix4 negates the zz signal (if applicable) and then negates stpclk#. sleep state: initiated by a read to the lvl3 register, the stpclk# signal is asserted and the processor issues a stop grant bus cycle. when stop grant cycle is terminated, piix4 asserts the zz pin to the l2 sram if the [zz_en] bit is set and after 50 pci clocks asserts the slp# signal. piix4 does not assert the cpu_stp# signal and the host clocks remain running in this state. in this state, the processor disables clocks to portions of its internal logic. the processor does not snoop host bus cycles and system designers must ensure that no host cycles to main memory are executed by other system masters. disabling of the pci arbiter is a method used by the host controller, for example. to exit this state, piix4 negates the slp# signal, waits approximately 32 m s and then negates the zz signal (if applicable); two pci clocks later stpclk# is negated. stop clock state (pentium ii processor only): initiated by a read to the lvl3 register, the stpclk# signal is asserted and the processor issues a stop grant bus cycle. when stop grant cycle is terminated, piix4 asserts the zz pin to the l2 sram if the [zz_en] bit is set, asserts the sus_stat1# signal to host bridge to enable suspend refresh for the dram, and then asserts the cpu_stp# signal to the clock synthesizer. the host clocks stop running in this state. the processor does not snoop host bus cycles and system designers must ensure that no host cycles to main memory are executed by other system masters. to exit this state, piix4 negates the cpu_stp# signal. at this time piix4 loads the fast burst timer (see below) with the [cpu_lck] value and count down allowing time for the processor pll to lock. after the timer expires, piix4 negates the sus_stat1# signal, the zz signal (if applicable), and finally stpclk#. deep sleep state (pentium ii processor only): initiated by a read to the lvl3 register, the stpclk# signal is asserted and the processor issues a stop grant bus cycle. when stop grant cycle is terminated, piix4 asserts the zz pin to the l2 sram if the [zz_en] bit is set, asserts the slp# signal, asserts the sus_stat1# signal to host bridge to enable suspend refresh for the dram and then asserts the cpu_stp# signal to the clock
e 82371AB (piix4) 205 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary synthesizer. the host clocks stop running in this state. the processor does not snoop host bus cycles and system designers must ensure that no host cycles to main memory are executed by other system masters. to exit this state, piix4 negates the cpu_stp# signal. again, piix4 loads the fast burst timer with the [cpu_lck] value and count down allowing time for the processor pll to lock. after the timer expires, piix4 negates the sus_stat1# signal, the slp# signal, and zz signal (if applicable), and stp_clk#. system throttle control: if the system has been placed into the stop grant or quick start states and [tht_en] bit is set, piix4 toggles the stpclk# signal and zz signal (if [zz_en] set) with a period of 244 m s (approximately eight 32-khz clock periods) and a programmable duty cycle. this system toggles between full- speed operation and the stop grant or quick start state. the duty cycle can be set in 12.5% increments by programming the [thtl_dty] bits in the processor control (p_cntrl) register. this emulates a reduced frequency host clock, resulting in associated power savings. thermal throttle control: if the thrm# signal is asserted for greater than 2 seconds and the system is not in a stop clock, sleep, or deep sleep state, piix4 automatically starts toggling the stpclk# signal and zz signal (if [zz_en] set) with a period of 244 m s and a programmable duty cycle. this system toggles between full- speed operation and the stop grant state. the duty cycle can be set in 12.5% increments by programming the [thrm_dty] bits in the count b (cntb) register. the functionality of thermal throttling is independent of [thrm_en] bit, which is used to enable events for other power management functions. the [thrm_dty] field must be programmed by the bios. this emulates a reduced frequency host clock, resulting in reduced power and thermal output. when the thrm# signal is negated, the system returns to clock control previously in use. stop break and burst execution: once the hardware has been placed into a clock control state, it can be restored to full operation by system hardware or software. software can restore the system to full operation by clearing the [cc_en] bit. hardware events can be enabled to return the system to a non-clock controlled condition. if the [brst_en] bit is reset, these events are called stop break events. alternatively, if the [brst_en] bit is set, these events are called burst events. stop break events completely return the system to non-clock controlled state. to restore clock control, software must set the desired clock control configuration and again perform a read from lvl2 or lvl3 registers to initiate the control. burst events cause the reload of a burst timer, which begins to count down from its loaded value. while the timer is counting, the system returns to full clock operation. once the burst timer expires, the system automatically returns to the clock controlled state. piix4 provides two different burst timers, a fast burst timer (which generates a short count) and a slow burst timer (which generates a longer count). care must be taken before placing the system into a lvl2 or lvl3 state when the [brst_en] bit is set. prior to lvl2 or lvl3 register read, software must ensure that no external burst events are active and only device 3 idle timer should be enabled as a burst event. the device 3 idle timer is then enabled with all reload events disabled. the lvl2 or lvl3 register read is performed placing the system into a lvl2 or lvl3 clock control condition. the device 3 idle timer will then generate a burst event upon expiration. during this first burst, the desired burst events are then enabled. failure to follow this procedure may cause the piix4 to miss lvl2 or lvl3 register reads. the thermal throttle state is not affected by [cc_en] bit settings, nor are any hardware stop break or burst events. stop break events are the logical ? or ? of fast burst and slow burst events. if the [brst_en] bit is high, the burst events reload their associated burst timer. when the [brst_en] bit is low, these events generate a stop break event. the fast burst and slow burst timer and burst event programming information is shown on next page.
82371AB (piix4) e 206 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary fast burst timer programming information: resolution: 1 ms count: 5 bit [fb_cnt] slow burst timer programming information: resolution: 1 s ec count: 4 bit [sb_cnt] fast burst timer programming information (for pll lock): resolution: 1 or 1 ms [cpu_sel] count: 5 bit [cpu_lck] fast burst events irq0: [brld_en_irq0] irq8: [brld_en_irq8] nmi, init, irq[1,3:7,9:15]: [brld_en_irq] pci bus master activity: [brld_en_bm] device 0 ? 13 monitors: [brld_en_devx] x=1 ? 13 slow/fast burst select: [brld_sel_devx] x=1 ? 3, 5 pci activity (frame# assertion): [brld_en_pci] gpi1 asserted: [brld_en_pme] lid asserted: [brld_en_pme] ? polarity select: [lid_pol] pwrbtn# asserted: [brld_en_pme] smi# event: [brld_en_pme] slow burst events device 0 ? 13 monitors: [brld_en_devx] x=1 ? 3, 5 slow/fast burst select: [brld_sel_devx] x=1 ? 3, 5
e 82371AB (piix4) 207 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary programmable duty cycle 244 s throttle clocks stpclk# clocks stpclk# clocks stpclk# throttle stop grant stop clock software (os or apm) clock break event the clock control unit remains at full-speed until software re-enables the clock control mode software (os or apm) clk_cnt1 figure 11 . clock control mechanisms (non-burst)
82371AB (piix4) e 208 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary programmable duty cycle 244 s throttle clocks stpclk# clocks stpclk# clocks stpclk# throttle stop grant stop clock software (os or apm) break event the clock control unit remains in the enabled mode until software breaks it out slow burst fast burst burst timer expires clk_cnt2 figure 12 . clock control mechanisms (with burst enabled) 11.2.2. stop clock and deep sleep state example sequence the stop clock mode requires special consideration to allow the processor pll to stabilize before starting any activity that would require the processor to snoop its internal cache. the following is an example of system transition into and out of stop clock. figure 13 shows an example timing diagram. the numbers shown in braces {} below correspond to the numbers shown in figure 13 . entering the processor stop clock state: software sets piix4 for the appropriate clock control mechanism. software disables the pci arbiter in the host bridge. software sets piix4 to enable the stop clock mode by reading lvl3 register. piix4 asserts stpclk# pin. processor accepts stpclk# interrupt, flushes buffers, sends the stop grant bus cycle. the host bridge forwards stop grant bus cycle to pci bus and does pci master abort. the host bridge completes the stop grant bus cycle by returning an rdy# (brdy#) to the processor. processor gates the internal clocks to the processor core and enters the stop grant state. piix4 asserts the zz pin to the sram if the [zz_en] bit is set.
e 82371AB (piix4) 209 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary piix4 waits up to 2 ? 32-khz clock periods after receiving the stop grant bus cycle to allow the host bridge to complete pending cycles to dram. piix4 then asserts the sustat1# signal to the host bridge {1}. piix4 waits an additional 32-khz clock period while the host bridge switches from normal refresh to suspend refresh, then asserts the cpu_stp# signal to the clock synthesizer which stops the host clock to the processor, host bridge, l2 sram, and sdram. the processor is now in the stop clock state {3}. the processor will stay in this state until a stop break or burst event occurs. leaving the processor stop clock state: a stop break or burst event occurs. piix4 negates the cpu_stp# signal to the clock synthesizer to start the host clocks. piix4 waits for the processor pll to start and lock (about 1 ms + 1 32-khz period) then negates the sus_stat1# signal {4}. the host bridge will switch from suspend refresh to normal refresh after the sus_stat1# signal is negated. piix4 waits up to 2 ? 32-khz periods and then negates the stpclk# signal {5}. if the zz signal was enabled, piix4 will negate the zz signal a minimum of 2 pci clocks before the stpclk# signal is negated {8}. processor returns to the on state and resumes normal execution. software re-enables the host bridge pci arbiter. note pci masters must not be granted the bus before the processor is ready to snoop the pci cycles (stpclk# negated). therefore, when the system enters the stop clock state the pci arbiter (host bridge) must be disabled. when the pci arbiter is disabled any request to the arbiter (req# or phold# from piix4) should generate an smi# so that power management software can re-enable the arbiter. these requests can be trapped using the device 8 (lpt) peripheral device monitor.
82371AB (piix4) e 210 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary stpclk# request to clkrun hclk zz sustat1# cpu_stp pci bus stop grant cycle request to clkrun 7 1 3 4 5 8 stpclk. notes: the numbers shown in this figure are referenced in the bullets on previous page for entering and leaving the stop clock state. figure 13 . stop clock example 11.2.3. pci clock control piix4 manages the pci clock control through the clkrun# protocol as specified by the pci mobile design guide rev 1.0. piix4 acts as the clkrun# central resource . if the [clkrun_en] bit is set in the clock control register, piix4 requests to stop the pci clock if the bus has been idle for 26 pci clocks. piix4 asserts the pci clkrun# signal high for four clocks. if no other device in the system denies the request to stop before the 5th pci clock, then piix4 asserts the pci_stp# signal to the clock synthesizer to gate the pci clocks to the system. piix4 should always receive a pci clock even after the clocks have been stopped to the rest of the system. the clock synthesizer must have one non-gated pci clock signal routed to piix4. the clock synthesizer must follow the timing diagrams shown in figure 18 and figure 19 for stopping and starting the pci clocks. 11.3. peripheral device management the piix4 peripheral device management mechanisms provide means to detect an idle peripheral device and to trap accesses to a peripheral device that has been powered down. device activity can also reload the global standby timer or can generate a clock control stop break or burst event. device accesses (i/o or memory) are monitored from the pci bus. for devices that sit on the isa bus, these accesses can be forwarded to the
e 82371AB (piix4) 211 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary isa bus. piix4 contains 14 separate device monitors, each capable of detecting activity for a different type of device. figure 14 illustrates the logic associated with each device monitor. device access (i/o, mem) dack# gpi idle timer (for each device) trap (for each device) re-load smi# global timer re-load clock break/burst timer reload forward cycle to eio bus [idle status] to clock control [trap status] (with/devsel# for i/o re-start) smi# dev_mon figure 14 . device monitoring logic 11.3.1. device idle timer each device has an idle timer (except device 12 and 13) that can be reloaded by activity on that device. individual device monitors are configured to monitor a specific type of device, such as an ide hard drive or the audio subsystem. activity indication is specific to each device and can include the following: device access. specific i/o or memory ranges associated with that device are monitored on the pci bus. most devices have multiple options to allow for a wide range of system configurations. dma acknowledge. dack# used for dma transfers by the device, if applicable (audio, floppy, lpt). general purpose input. most device monitor can watch for assertion of a specific general purpose input (gpi) pin. each gpi signal can have its assertion polarity modified to be high or low. two gpi signals (device 12 and 13) can also be enabled for edge transition detection. system activity. miscellaneous activity such as keyboard or mouse interrupt, pci bus master activity, or pci bus utilization (used to monitor for graphics activity) may be monitored for specific devices. a device access, dack# assertion, or gpi signal can be enabled to reload the device?s idle timer as well as to reload the global standby timer or the fast burst or slow burst timers. some of the device monitors can serve multiple functions. for example, the device 3 ide secondary ide drive 1 monitor can also be enabled as a programmable software timer. the device 8 lpt monitor can be enabled to monitor parallel port activity or pci bus master activity. when the idle timer expires (due to no reload activity), an idle status bit is set and an smi# is generated if enabled. the power management software can then place the idle device into a power managed condition. the idle timers stop counting when the [sm_freeze] bit is set. this can be used to keep the idle timers from counting down when the system is executing an smi routine.
82371AB (piix4) e 212 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.2. device trap each device monitor can enable an io trap so that when software makes an access to the enabled i/o or memory range a trap status bit is set and an smi# is generated if enabled. the i/o trap smi# is synchronous to the completion of the i/o instruction in the processor. the i/o instruction is completed when the brdy# is returned to the processor. piix4 coordinates the assertion of smi# to the processor with the generation of brdy# to the processor from the host bridge such that the smi# is generated at least 3 hclks before ready is generated. this allows the processor to perform an io restart cycle. if the device to be trapped is a pci device, piix4 must be enabled to claim the cycle so that the smi# can be generated synchronously. the device should be programmed to send the i/o access cycle to the isa bus where it is terminated normally (although read cycles will return unknown data). 11.3.3. peripheral device m anagement sequence following is a brief description of the peripheral device power management process. setup: the system?s power management software initializes the access i/o address ranges and the idle timer counter for each peripheral device. on-to-off transition : when power management software enables the idle timer for that device, the idle timer begins to count down. any access to a peripheral device?s i/o address (also dack# or gpi assertion if enabled) reloads that device?s idle timer. if the peripheral device?s idle timer expires, the idle status bit is set, and an smi# is generated. the power management software (smi# handler) identifies the device by the status bit, then puts the peripheral device into a low power state, disables the idle timer hardware, and enables the i/o trap hardware. off-to-on transition : when the system requires an i/o access to that device range, the access is trapped, an smi# is generated, and the corresponding i/o trap smi status bit is set. the power management software determines which device was accessed, restores the peripheral device to the ? on ? state, clears the trap smi status bits, and then enables the idle timer hardware. the processor then issues an i/o restart to access the device again. 11.3.4. device location on pci bus or isa bus most of the peripheral devices have the capability to exist on the pci bus or the isa/eio bus. however, piix4 does not support rtc or keyboard controller to be resided on the pci bus. the device activity monitor is watching cycles on the pci bus to generate activity events. the device monitors also can be enabled to forward cycles to the device?s enabled addresses to the isa bus. devices that reside on the isa bus must have both address ranges selected and enabled and the isa/eio forwarding enabled. pci accesses to external ide devices on the pci bus do not generate power management events (idle timer reloads, global standby timer reloads, burst timer reloads, i/o traps). power management of external pci-based ide devices must use other means to monitor the activity of those devices. on next page are the following methods for system bios to use to monitor external pci-based ide devices:
e 82371AB (piix4) 213 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 1. if there is a need to monitor accesses to the ide controller to keep the global standby timer from expiring, then the irqs should be enabled (grld_en_irq) as a reload event for the global standby timer. 2. if there is a need to monitor an external ide controller for idleness, use the following algorithm a. disable the external ide controller. set the piix4 to trap on the ide access and enable the internal ide controller. b. when the smi is generated, the idle timer can be started, the internal ide controller disabled, and the instruction redone to the external ide controller. the ide device is then assumed to be active during idle timer count down. c. when the idle timer times out, an smi is generated and the piix4 should again be set to trap, the external ide device disabled, and the idle timer started. d. if the idle timer times out before the trap occurs, then the external ide con troller is idle and can be put into a lower power mode. the piix4 is then set up to trap as in number 3, below. e. if the trap occurs first, the ide device is not idle. the bios then returns to step b, above. 3. if there is a need to perform i/o trapping on an external ide controller, set the piix4 to trap on the ide access and enable the piix4 internal ide controller. when the smi is generated, the internal ide controller can be disabled, the external controller enabled, and the i/o cycle restarted. table 33 . peripheral device overview device access reload peripheral device access address dack# gpi idle timer count global standby fast burst slow burst 0. primary ide drive 0 1f0h ? 1f7h 3f6h ide pddack# cnt-a x x 1. primary ide drive 1 1f0h ? 1f7h 3f6h ide pddack# gpi5 cnt-a x x x 2. secondary ide drive 0 170h ? 177h 376h ide sddack# gpi6 cnt-a x x x 3. secondary ide drive 1 (software smi timer) 170h ? 177h 376h ide sddack# gpi0 swcnt x x x 4. audio 300h ? 303h midi 310h ? 313h midi 320h ? 323h midi 330h ? 333h midi 200h ? 207h game 388h ? 38bh adlib 220h ? 233h sb-8/16 240h ? 253h sb-8/16 260h ? 273h sb-8/16 280h ? 293h sb-8/16 530h ? 537h mss 604h ? 60bh mss e80h ? e87h mss f40h ? f47h mss any/all: dack[x]# 0,1,3,5,6,7 gpi13 cnt-b x x 5. fdd 3f0h ? 3f5h, 3f7h 370h ? 375h, 3f7h dack2# gpi14 cnt-b x x x
82371AB (piix4) e 214 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 33 . peripheral device overview device access reload peripheral device access address dack# gpi idle timer count global standby fast burst slow burst 6. serial a (modem) 3f8h ? 3ffh com1 2f8h ? 2ffh com2 220h ? 227h 228h ? 22fh 238h ? 23fh 2e8h ? 2efh com4 338h ? 33fh 3e8h ? 3efh com3 gpi15 cnt-b x x 7. serial b (ir) 3f8h ? 3ffh com1 2f8h ? 2ffh com2 220h ? 227h 228h ? 22fh 238h ? 23fh 2e8h ? 2efh com4 338h ? 33fh 3e8h ? 3efh com3 gpi16 cnt-b x x 8. lpt lpt_dec_sel:3 0,0=3bch ? 3bfh, 7bch ? 7beh, 0,1=378h ? 37fh, 778h ? 77ah, 1,0=278h ? 27fh, 678h ? 67ah, one of: dack[x]# 0,1,3 gpi17 bm_cnt x x (8.) bus master activity pcireq[a:d]#, phold# dev8 timer x x 9. generic i/o range 0 16-byte i/o range gpi4 cnt-c x x 10. generic i/o range 1 16-byte i/o range gpi18 cnt-c x x 11. user interface graphics keyboard mouse pci utilization 1m to 8m mem range a0000h ? bffffh 3b0h ? 3dfh vga 60h, 64h irq0, irq12/m gpi19 cnt-d x x 12. cardbus 0 16-byte i/o range 32-kb ? 4-mb mem range gpi20 x x 13. cardbus 1 16-byte i/o range 32-kb ? 4-mb mem range gpi21 x x
e 82371AB (piix4) 215 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5. device specific det ails for each device monitor, the system events which can cause actions such as timer reloads or io traps are listed. the power management resources affected by these events are also listed. the names of register bits which are programmed to enable power management resources or status bits set when events occur are shown in brackets for each item. more specific information can be found in the register bit descriptions. 11.3.5.1. device 0: ide primary drive 0 device 0 monitors only the primary ide device, drive 0. the ide device drv bit (bit 4 of port 1f6h) is shadowed to determine if drive 0 is active on the primary connector. device 0 system events: ? pci accesses to io address 1f0 ? 1f7h, 3f6h, independent of ide enable in pci function 1, if ide drive 0 is active. this allows monitoring of devices on pci or isa bus. this can cause idle, burst, or global standby timer reloads or io trap smi#. ? pddack# assertion if primary ide drive 0 is active and bmide is active for primary connector. this can cause only idle, burst and global standby timer reloads. ? there are no general purpose inputs associated with device 0. device 0 idle timer: resolution: 1 second or 8 second [idl_sel_dev0] count: 4 bit [idl_cnta] device 0 idle timer reload: [idl_en_dev0] global standby timer reload: [grld_en_dev0] burst timer reload (slow burst only): [brld_en_dev0] idle timer expiration smi#: [idl_en_dev0] [idl_sts_dev0] io trap smi#: [trp_en_dev0] [trp_sts_dev0]
82371AB (piix4) e 216 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.2. device 1: ide primary drive 1 device 1 monitors the primary ide device, drive 1 and gpi5. the ide device drv bit (bit 4 of port 1f6h) is shadowed to determine if drive 1 is active on the primary connector. device 1 system events: ? pci accesses to io address 1f0 ? 1f7h, 3f6h, independent of ide enable in pci function 1, if ide drive 1 is active. this can cause idle, burst or global standby timer reloads or io trap smi#. ? pddack# assertion if primary ide drive 1 is active, the ide interface is configured as primary and secondary and bmide is active for primary channel. this can cause only idle, burst, and global standby timer reloads. ? assertion of gpi5. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads or io trap smi#. device 1 idle timer: resolution: 1 second or 8 second [idl_sel_dev1] count: 4 bit [idl_cnta] gpi enable: [gpi_en_dev1] gpi polarity select: [gpi_pol_dev1] device 1 idle timer reload: [idl_en_dev1] global standby timer reload: [grld_en_dev1] burst timer reload: [brld_en_dev1] fast or slow burst select: [brld_sel_dev1] idle timer expiration smi#: [idl_en_dev1] [idl_sts_dev1] trap smi#: [trp_en_dev1] [trp_sts_dev1] 11.3.5.3. device 2: ide secondary drive 0 device 2 monitors the secondary ide device, drive 0 and gpi6. the ide device drv bit (bit 4 of port 176h) is shadowed to determine if drive 0 is active on the secondary connector. device 2 system events: ? pci accesses to io address 170 ? 177h, 376h, independent of ide enable in pci function 1, if secondary ide drive 0 is active. this can cause idle, burst, or global standby timer reloads or io trap smi#. ? sddack# assertion if secondary ide drive 0 is active, the ide interface is configured as primary and secondary and bmide is active for secondary channel. this can cause only idle, burst, and global standby timer reloads. ? assertion of gpi6. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads or io trap smi#. device 2 idle timer: resolution: 1 second or 8 second [idl_sel_dev2] count: 4 bit [idl_cnta] gpi enable: [gpi_en_dev2] gpi polarity select: [gpi_pol_dev2] device 2 idle timer reload: [idl_en_dev2] global standby timer reload: [grld_en_dev2] burst timer reload: [brld_en_dev2] fast or slow burst select: [brld_sel_dev2] idle timer expiration smi#: [idl_en_dev2] [idl_sts_dev2] trap smi#: [trp_en_dev2] [trp_sts_dev2]
e 82371AB (piix4) 217 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.4. device 3: ide secondary drive 1 device 3 monitors the secondary ide device, drive 1 and gpi0. the ide device drv bit (bit 4 of port 176h) is shadowed to determine if drive 1 is active on the secondary connector. device 3 can also be used as a software smi# timer. it has a configuration bit to disable the idle timer reload so that the timer can be allowed to expire based only on the timer count. device 3 system events: ? pci accesses to io address 170 ? 177h, 376h, independent of ide enable in pci function 1, if secondary ide drive 1 is active. this can cause idle, burst, or global standby timer reloads or io trap smi#. ? sddack# assertion if secondary ide drive 1 is active, the ide interface is configured as primary and secondary and bmide is active for secondary channel. this can cause only idle, burst, and global standby timer reloads. ? assertion of gpi0. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads or io trap smi#. device 3 idle timer: resolution: 1 msec or 8 sec [idl_sel_dev3] count: 4 bit [sw_cnt] gpi enable: [gpi_en_dev3] gpi polarity select: [gpi_pol_dev3] device 3 idle timer reload: [idl_en_dev3] idle timer reload disable (sw): [idl_rld_en_dev3] global standby timer reload: [grld_en_dev3] burst timer reload: [brld_en_dev3] fast or slow burst select: [brld_sel_dev3] idle timer expiration smi#: [idl_en_dev3] [idl_sts_dev3] trap smi#: [trp_en_dev3] [trp_sts_dev3]
82371AB (piix4) e 218 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.5. device 4: audio device 4 monitors an audio subsystem and gpi13. the available address ranges encompass the following types of audio devices, 8/16-bit sound blaster, standard game port, adlib music synthesizer, microsoft sound system, and midi. the actual address ranges selectable for each type is shown below. device 4 system events: ? pci accesses to any of the enabled io addresses (see below). this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. ? dackx# assertion (x=0,1,3,5,6,7) if enabled (see below). this can cause only idle, burst, and global standby timer reloads. ? assertion of gpi13. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads. device 4 address ranges: sound blaster 8/16: 220 ? 22fh, 230 ? 233h or [sb_en] 240 ? 24fh, 250 ? 253h or [sb_sel] 260 ? 26fh, 270 ? 273h or 280 ? 28fh, 290 ? 293h game port: 200 ? 207h [game_en] adlib synthesizer: 388 ? 38bh [sb_en] microsoft sound system: 530 ? 537h or [mss_en] 604 ? 60bh or [mss_sel] e80 ? e87h or f40 ? f47h midi: 300 ? 303h or [midi_en] 310 ? 313h or [midi_sel] 320 ? 323h or 330 ? 333h device 4 idle timer: resolution: 1 second count: 5 bit [idl_cntb] gpi enable: [gpi_en_dev4] gpi polarity select: [gpi_pol_dev4] dackx# enables: [dackx_en_dev4] where x=0,1,3,5,6,7 device 4 isa forwarding enable: [eio_en_dev4] device 4 idle timer reload: [idl_en_dev4] global standby timer reload: [grld_en_dev4] burst timer reload (fast burst only): [brld_en_dev4] idle timer expiration smi#: [idl_en_dev4] [idl_sts_dev4] trap smi#: [trp_en_dev4] [trp_sts_dev4]
e 82371AB (piix4) 219 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.6. device 5: floppy disk drive device 5 monitors accesses to floppy drive controller or gpi14. device 5 system events: ? pci accesses to io addresses for the floppy drive, selectable below. this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. ? dack2# assertion if enabled (see below). this can cause only idle, burst, and global standby timer reloads. ? assertion of gpi14. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads. device 5 address ranges: floppy drive: 3f0 ? 3f5h, 3f7h or [fdc_mon_en] 370 ? 375h, 377h [fdc_dec_sel] device 5 idle timer: resolution: 1 second count: 5 bit [idl_cntb] gpi enable: [gpi_en_dev5] gpi polarity select: [gpi_pol_dev5] dack2# enable: [res_en_dev5] device 5 isa forwarding enable: [eio_en_dev5] device 5 idle timer reload: [idl_en_dev5] global standby timer reload: [grld_en_dev5] burst timer reload: [brld_en_dev5] fast or slow burst select: [brld_sel_dev5] idle timer expiration smi#: [idl_en_dev5] [idl_sts_dev5] trap smi#: [trp_en_dev5] [trp_sts_dev5]
82371AB (piix4) e 220 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.7. device 6: serial port a device 6 monitors accesses to serial port a or gpi15. device 7 also monitors serial port resources. this gives the capability to monitor two separate serial ports in a system. device 6 system events: ? pci accesses to io addresses for a serial port, selectable below. this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. ? assertion of gpi15. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads. device 6 address ranges: serial port a: 3f8 ? 3ffh or [sa_mon_en] 2f8 ? 2ffh or [coma_dec_sel] 220 ? 227h or 228 ? 22fh or 238 ? 23fh or 2e8 ? 2efh or 338 ? 33fh or 3e8 ? 3efh device 6 idle timer: resolution: 1 second count: 5 bit [idl_cntb] gpi enable: [gpi_en_dev6] gpi polarity select: [gpi_pol_dev6] device 6 isa forwarding enable: [eio_en_dev6] device 6 idle timer reload: [idl_en_dev6] global standby timer reload: [grld_en_dev6] burst timer reload (fast burst only): [brld_en_dev6] idle timer expiration smi#: [idl_en_dev6] [idl_sts_dev6] trap smi#: [trp_en_dev6] [trp_sts_dev6]
e 82371AB (piix4) 221 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.8. device 7: serial port b device 7 monitors accesses to serial port b or gpi16. device 6 also monitors serial port resources. this gives the capability to monitor two separate serial ports in a system. device 7 system events: ? pci accesses to io addresses for a serial port, selectable below. this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. ? assertion of gpi16. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads. device 7 address ranges: serial port b: 3f8 ? 3ffh or [sb_mon_en] 2f8 ? 2ffh or [comb_dec_sel] 220 ? 227h or 228 ? 22fh or 238 ? 23fh or 2e8 ? 2efh or 338 ? 33fh or 3e8 ? 3efh device 7 idle timer: resolution: 1 second count: 5 bit [idl_cntb] gpi enable: [gpi_en_dev7] gpi polarity select: [gpi_pol_dev7] device 7 isa forwarding enable: [eio_en_dev7] device 7 idle timer reload: [idl_en_dev7] global standby timer reload: [grld_en_dev7] burst timer reload (fast burst only): [brld_en_dev7] idle timer expiration smi#: [idl_en_dev7] [idl_sts_dev7] trap smi#: [trp_en_dev7] [trp_sts_dev7]
82371AB (piix4) e 222 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.9. device 8: lpt (parallel port) device 8 monitors accesses to parallel port or gpi17. it can also be used to monitor for pci bus master activity (piix4 or any other pci master). device 8 system events: ? pci accesses to io addresses for a parallel port, selectable below. this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. ? dackx# assertion (x=0,1,3) if enabled (see below). this can cause idle, burst, and global standby timer reloads. ? assertion of gpi17. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads. ? assertion of pcireq[0:3] or phold#, signifying pci master activity. this can cause idle, burst, or global standby timer reloads or io trap smi#. the bus master activity can be programmed to cause a trap smi# independently of io address accesses. device 8 address ranges: lpt (parallel port): 378 ? 37fh, 778 ? 77ah or [lpt_mon_en] 278 ? 27fh, 678 ? 67ah or [lpt_dec_sel] 3bc ? 3bfh, 7bc ? 7beh device 8 idle timer: resolution: 1 msec or 1 sec [idl_sel_dev8] count: 5 bit [bm_cnt] gpi enable: [gpi_en_dev8] gpi polarity select: [gpi_pol_dev8] dackx# enables: [res_en_dev8] dackx# select (dackx#=0,1,3): [lpt_dma_sel] device 8 isa forwarding enable: [eio_en_dev8] device 8 idle timer reload: [idl_en_dev8] global standby timer reload: [grld_en_dev8] burst timer reload (fast burst only): decode, dack gpi: [brld_en_dev8] above and bus master: [bm_rld_dev8] bus master only: [brld_en_bm] idle timer expiration smi#: [idl_en_dev8] [idl_sts_dev8] trap smi# (lpt or gpi only): [trp_en_dev8] [trp_sts_dev8] trap smi# (bus master only): [bm_trp_en] [bm_sts]
e 82371AB (piix4) 223 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.10. device 9: generic i/o device 0 device 9 monitors a device on the pci bus with a programmable io address or gpi4. device 9 system events: ? pci accesses to programmable io addresses, selectable below. this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. it can optionally generate a chip select signal (pcs0#). the address consists of a 16-bit base address and 4-bit mask, allowing an address range from 1 to 16 bytes. ? assertion of gpi4. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads. device 9 address ranges: [gdec_mon_dev9] programmable base address: [base_dev9] programmable mask: [mask_dev9] device 9 idle timer: resolution: 1 second count: 5 bit [idl_cntc] gpi enable: [gpi_en_dev9] gpi polarity select: [gpi_pol_dev9] device 9 isa forwarding enable: [eio_en_dev9] chip select (pcs0#) enable: [cs_en_dev9] device 9 idle timer reload: [idl_en_dev9] global standby timer reload: [grld_en_dev9] burst timer reload (fast burst only): [brld_en_dev9] idle timer expiration smi#: [idl_en_dev9] [idl_sts_dev9] trap smi#: [trp_en_dev9] [trp_sts_dev9]
82371AB (piix4) e 224 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.11. device 10: generic i/o device 1 device 10 monitors a generic i/o device with a programmable io address or gpi18. device 10 system events: ? pci accesses to programmable io addresses, selectable below. this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. it can optionally generate a chip select signal (pcs1#). the address consists of a 16-bit base address and 4-bit mask, allowing an address range from 1 to 16 bytes. ? assertion of gpi18. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads. device 10 address ranges: [gdec_mon_dev10] programmable base address: [base_dev10] programmable mask: [mask_dev10] device 10 idle timer: resolution: 1 second count: 5 bit [idl_cntc] gpi enable: [gpi_en_dev10] gpi polarity select: [gpi_pol_dev10] device 10 isa forwarding enable: [eio_en_dev10] chip select (pcs1#) enable: [cs_en_dev10] device 10 idle timer reload: [idl_en_dev10] global standby timer reload: [grld_en_dev10] burst timer reload (fast burst only): [brld_en_dev10] idle timer expiration smi#: [idl_en_dev10] [idl_sts_dev10] trap smi#: [trp_en_dev10] [trp_sts_dev10]
e 82371AB (piix4) 225 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.12. device 11: user interface (keyboard, mouse, video) device 11 monitors the system?s primary user interfaces, the keyboard, a ps/2 mouse, or the video subsystem. it contains special logic to monitor the pci bus utilization in order to detect video activity. this will allow a system to playback video without power managing the video subsystem due to user inactivity (no keyboard or mouse movement). device 11 system events: ? pci accesses to programmable linear frame buffer addresses, selectable below. the linear frame buffer address consists of a 12-bit base address and 2-bit mask, allowing a frame buffer address range from 1 mbyte to 4 mbytes. this can cause burst timer reloads only. ? pci accesses to vga i/o addresses (3b0 ? 3dfh) or the a and b segment video memory ranges (a000 ? bfffh). this can cause burst timer reloads only. ? pci accesses to keyboard controller i/o addresses (60h, 64h). this can cause idle, burst, or global standby timer reloads, io trap smi#, or forwarding kbc cycles to isa. ? pci bus utilization is monitored and a system event is generated if the number of pci data phases (as measured by frame# assertion) exceeds a set limit. this can cause idle or global standby timer reloads. ? asserti on of gpi19. the polarity of active signal (high or low) is selectable. this can cause idle, burst, or global standby timer reloads or io trap smi#. ? assertion of irq1 or irq12/m. these can cause idle, burst, or global standby timer reloads or io trap smi#. device 11 linear frame buffer ranges: [lfb_dec_en] programmable base address: [lfbase_dev11] programmable mask: [lfmask_dev11] device 11 vga decode: [graph_io_en] device 11 a,b segment decode: [graph_ab_en] device 11 idle timer: resolution: 1 second or 1 minute [idl_sel_dev11] count: 5 bit [idl_cntd] gpi enable: [gpi_en_dev11] gpi polarity select: [gpi_pol_dev11] irq1 enable: [irq1_en_dev11] irq12/m enable: [irq12_en_dev11] kbc decode enable: [kbc_en_dev11] device 11 isa forwarding enable: [kbc_eio_en] pci bus utilization enable: [video_en] [video_sts] threshold: [bus_util] percent active: [%bus_util] device 11 idle timer reload: [idl_en_dev11] global standby timer reload: [grld_en_dev11] burst timer reload (fast burst only): [brld_en_dev11] idle timer expiration smi#: [idl_en_dev11] [idl_sts_dev11] trap smi#: [trp_en_dev11] [trp_sts_dev11]
82371AB (piix4) e 226 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.13. device 12: cardbus slot (or generic i/o and mem device) device 12 monitors a generic i/o device or memory device with a programmable io or memory address or gpi20. its operation is the same as device 13. device 12 system events: ? pci accesses to programmable io addresses and memory addresses, selectable below. this can cause burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. the io address consists of a 16-bit base address and 4-bit mask, allowing an io address range from 1 to 16 bytes. the memory address consists of a 17-bit base address (ad[31:15]) and a 7-bit mask (ad[21:15]). this provides memory ranges from 32 kbytes to 4 mbytes in size. ? assertion of gpi20. the polarity of active signal (high or low) is selectable. it can also be enabled as edge-triggered. this can cause burst, or global standby timer reloads or io trap smi#. ? there is no idle timer associated with device 12. device 12 io address range: [io_en_dev12] programmable io base address: [ibase_dev12] programmable io mask: [imask_dev12] device 12 memory address range: [mem_en_dev12] programmable mem base addr: [mbase_dev12] programmable memory mask: [mmask_dev12] device 12 idle timer: none gpi enable: [gpi_en_dev12] gpi polarity select: [gpi_pol_dev12] gpi edge detect enable: [gpi_edg_dev12] device 12 isa forwarding enable: [eio_en_dev12] global standby timer reload: [grld_en_dev12] burst timer reload (fast burst only): [brld_en_dev12] trap smi#: [trp_en_dev12] [trp_sts_dev12]
e 82371AB (piix4) 227 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.3.5.14. device 13: cardbus slot (or generic i/o and mem device) device 13 monitors a generic i/o device or memory device with a programmable io or memory address or gpi21. its operation is the same as device 12. device 13 system events: ? pci accesses to programmable io addresses and memory addresses, selectable below. this can cause burst, or global standby timer reloads, io trap smi#, or forwarding of the cycle from pci to isa. the io address consists of a 16-bit base address and 4-bit mask, allowing an io address range from 1 to 16 bytes. the memory address consists of a 17-bit base address (ad[31:15]) and a 7-bit mask (ad[21:15]). this provides memory ranges from 32 kbytes to 4 mbytes in size. ? assertion of gpi21. the polarity of active signal (high or low) is selectable. it can also be enabled as edge-triggered. this can cause burst, or global standby timer reloads or io trap smi#. ? there is no idle timer associated with device 13. device 13 io address range: [io_en_dev13] programmable io base address: [ibase_dev13] programmable io mask: [imask_dev13] device 13 memory address range: [mem_en_dev13] programmable mem base addr: [mbase_dev13] programmable memory mask: [mmask_dev13] device 13 idle timer: none gpi enable: [gpi_en_dev13] gpi polarity select: [gpi_pol_dev13] gpi edge detect enable: [gpi_edg_dev13] device 13 isa forwarding enable: [eio_en_dev13] global standby timer reload: [grld_en_dev13] burst timer reload (fast burst only): [brld_en_dev13] trap smi#: [trp_en_dev13] [trp_sts_dev13]
82371AB (piix4) e 228 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4. suspend/resume and power plane control 11.4.1. system suspend piix4 supports three different suspend modes. the piix4 power management architecture is designed to allow a single system to support multiple suspend modes and to switch between those modes as required. a suspended system can be resumed via a number of different events. it will then return to full operation where it can continue processing or be placed into another suspend mode (potentially a lower power mode than it resumed from). the standard system usage model for these modes are described here and include power on suspend (pos), suspend to ram (str), and suspend to disk (std). this definition allows for other system usage models which use the piix4 suspend/resume control signals in other ways. the standard system mode names are used throughout this document. table 34 summarizes these modes along with their target system power. power on suspend (pos) system model all devices are powered up except for the clock synthesizer. the host and pci clocks are inactive and piix4 provides control signals and 32-khz suspend clock (susclk) to allow for dram refresh and to turn off the clock synthesizer. the only power consumed in the system is due to dram refresh and leakage current of the powered devices. when the system resumes from pos, piix4 can optionally resume without resetting the system, can reset the processor only, or can reset the entire system. when no reset is performed, piix4 only needs to wait for the clock synthesizer and processor plls to lock before the system is resumed. this takes typically 20 ms. suspend to ram (str) power is removed from most of the system components during str, except the dram. power is supplied to suspend refresh logic in the host controller, and rtc and suspend well logic in piix4. piix4 provides control signals and 32-khz suspend clock (susclk) to allow for dram refresh and to turn off the clock synthesizer and other power planes. piix4 will reset the system on resume from str. suspend to disk (std) power is removed from most of the system components during std. power is maintained to the rtc and suspend well logic in piix4. piix4 will reset the system on resume from std. this state is also called the soft off (soff) state. the difference depends on whether the system state is restored by software to a pre-suspend condition or if the system is rebooted. mechanical off (moff) this is not a suspend state. this is a condition where all power except the rtc battery has been removed from the system. it is typically controlled by a mechanical switch turning off ac power to a power supply. it could be used as a condition in which a mobile system?s main battery has been removed.
e 82371AB (piix4) 229 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 34 . different power management modes supported (standard system model) pm mode system strategy system target power system target resume latency global standby all monitored devices are powered off, and the processor?s clock is stopped. variable variable powered-on suspend (pos) same as global standby, but power is removed from the clock generators. <250 mw ~20 ms suspend to ram (str) power is removed everywhere in the system except: power management section of piix4, slow refresh logic in the memory controller and graphics chips, and the graphics and dram memory. <20 mw ~1 sec suspend to disk/ soft off (std/soff) power is removed everywhere except the power management sections of piix4. <300 uw < 30 sec piix4 controls the system entering the various suspend states through the suspend control signals listed in table 35 . upon initiation of suspend, piix4 will assert the sus_stat[1:2]#, susa#, susb#, and susc# signals in a well defined sequence to switch the system into the desired power state. the susa#, susb#, and susc# signals can be used to control various power planes in the system. the sus_stat1# signal is a status signal that indicates to the host bridge when to enter or exit a suspend state, or when to enter or exit a stop clock state (when the system is still running). this is typically used to place the dram controller into a suspend refresh mode of operation. the sus_stat2# signal is a status signal that can be used to indicate to other system devices when to enter or exit a suspend state (like the graphics and cardbus controllers). see ? system suspend and resume control signaling ? section for sequencing details. note that these signals are associated with a particular type of suspend mode and power plane for descriptive purposes in this section. the system designer can, however, use these signals to control any type of function desired. the system is placed in a suspend mode by programming the power management control register. the suspend type is first programmed and then the suspend enable bit is set. this causes piix4 to automatically sequence into the programmed suspend mode.
82371AB (piix4) e 230 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 35 . power state decode power state rsmrst# sus_stat1# sus_stat2# susa# susb# susc# on 1 x 1 1 1 1 1 pos 1 0 0 0 1 1 str 1 0 0 0 0 1 std/soff 1 0 0 0 0 0 mechanical off 0 0 0 0 0 0 notes: 1. sus_stat1# is also used when the system is running. it indicates to the host-to-pci bridge when to switch between the normal and suspend refresh mode for dram stop clock support. in the stop clock condition, hclk is stopped and the host-to-pci bridge must run dram refresh off the susclk input. 11.4.2. system resume piix4 can be resumed from either a suspend or soft off state. depending on the system?s suspend state, different features can be enabled to resume the system. there are two classes of resume events, those whose logic resides in the piix4 main power well and those whose logic resides in the piix4 suspend well. those in the suspend well can resume the system from any suspend or soft off state. those in the main power well can only resume the system from a powered on suspend state. table 36 lists the suspend states that can be enabled for a particular resume event. upon detection of an enabled resume event, piix4 will set appropriate status signals and automatically transition its suspend control signals bringing the system into a ? full on ? condition. the sequencing is shown in the ? system suspend and resume control signaling ? section. table 36 . resume events supported in different power states suspend states resume event pos str std/soff moff rtc alarm (irq8)* x x x smbus resume event (slave port match) x x x serial a ring (ri) x x x power button (pwrbtn#) x x x extsmi (extsmi#) x x x lid (lid) x x x gpi1 x x x gstby timer expiration x x x interrupt (irq[1,3:15]) x usb x the various resume events and their programming model are shown here.
e 82371AB (piix4) 231 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary system resume events pwrbtn# asserted: [pwrbtn_en] lid asserted: [lid_en] ? polarity se lect: [lid_pol] gpi1 asserted: [gpi_en] extsmi# asserted: [extsmi_en] smbus events: [alert_en] [slv_en] [shdw1_en] [shdw2_en] global standby timer expiration: [gstby_en] ring indicate assertion (ri#): [ri_en] rtc alarm (irq8): [rtc_en] usb resume signaling: (pos only) [usb_en] irq[1,3:7,9:15]: (pos only) [irq_rsm_en] rtc alarm only supports internal rtc. for external rtc implementations, the irq8 must be tied to one of the other resume input signals (gpi1, lid, extsmi#,ri#) for the resume functionality. the pwrbtn# and lid signals are internally debounced for 16 ms. they must be active for greater than this debounce time for the resume to be recognized. the gpi1, extsmi#, irq[15:9,7:3,1], and usb resume events must be active for a minimum of 64 m s (approximately 2 rtc clock periods) for the resume to be recognized. global standby timer resume the global standby timer is used to monitor for global system activity during normal operation and can be reloaded by system activity events. upon expiration, it generates an smi# (see ? system management ? section for additional information on global standby timer). when the system is placed in a suspend mode, the global standby timer can be used to generate a resume event. the global standby timer can enable four different timer resolutions for wake-up times from approximately 30 seconds to 8.5 hours. this allows the system to transition into a lower power suspend state.
82371AB (piix4) e 232 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3. system suspend and resume control signaling piix4 automatically controls the signals required to transition the system between the various power states. it provides control for host and pci clocks, main memory and video memory refresh, system power plane control, and system reset. figure 15 ? figure 17 show the system timings for changing the power states of a system using the standard pos/str/std models. the table notes provide information on how these signals operate in non-standard modes of operation (e.g., suspend to ram mode without removing core well power). 11.4.3.1. power supply timings t1 t2 rtc well power suspend well power core well power pwrseq figure 15 . piix4 power well table 37 . piix4 power well timings sym parameter min max unit notes t1 rtc well power to suspend well power 0 ns t2 suspend well power to core well power 0 ns
e 82371AB (piix4) 233 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.2. power level active status signal timings t3 t4 t5 suspend well power rsmrst# core well power pwrok pwrrst figure 16 . rsmrst# and pwrok timings table 38 . power supply timings sym parameter min max unit notes t3 suspend well power to rsmrst# inactive 1 ms t4 core well power to pwrok active 1 ms t5 rsmrst# inactive to pwrok active 0 ns
82371AB (piix4) e 234 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.3. power management signal timings (powered from suspend power well) this section shows the timing relationships for piix4 power management signals that are powered from the suspend power well. these timings hold independent of the condition of core well power or the pwrok signal. t6 t7 t9 t8 suspend well power rsmrst# sus_stat[1-2]# sus[a-c]# susclk rsmsig figure 17 . suspend well power and rsmrst# activated signals table 39 . suspend well power and rsmrst# activated signals timings sym parameter min max unit notes t6 resume well power and rsmrst# active to sus_stat[1:2]# active 1 rtc 1 t7 resume well power and rsmrst# active to sus[a:c]# active 1 rtc 1 t8 resume well power and rsmrst# active to susclk low 1 rtc 1 t9 rsmrst# inactive to sus[a:c]# inactive 1 2 rtc 1 notes: 1. these signals are controlled off an internal rtc clock. 1 rtc unit is approximately 32 s.
e 82371AB (piix4) 235 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.4. pci clock stop and start timing relationships figure 18 and figure 19 show the timing relationship for the control of system pciclk. the system pciclk timings must be followed exactly for proper operation of pc/pci dma or serial irq logic. if pc/pci dma and serial irqs are not used in the system, the system pciclk stop timings must meet the system developer?s requirements. pci_stp# piix4 pciclk system pciclk pcistp figure 18 . pci clock stop timing pci_stp# piix4 pciclk system pciclk pcistart figure 19 . pci clock start timing
82371AB (piix4) e 236 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.5. power management signal timings (powered from piix4 main core well) figure 20 shows the timing relations for power management signals powered from the piix4 core well. here the power active status signals (rsmrst# and pwrok) transition after the application of all power to piix4. it can be applied to situations where two or more of the piix4 power planes are connected together. it also shows timings when rsmrst# and pwrok are connected together. t10 t16 t15 t17 t11 t12 t13 t18 t19 t14 t18a t19a running active float stopped rtc well power suspend well power core well power rsmrst# pwrok cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# corepwr1 figure 20 . core well power and pwrok activated signals (core well power applied before rsmrst# inactive)
e 82371AB (piix4) 237 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 40 . core well power and pwrok activated signals timings sym parameter min max unit notes t10 core well power and pwrok inactive to cpu_stp# and pci_stp# float 1 rtc 1 t11 core well power and pwrok inactive to pcirst# active 1 rtc 1 t12 core well power and pwrok inactive to cpurst active 1 rtc 1 t13 core well power and pwrok inactive to slp# inactive 1 rtc 1 t14 core well power and pwrok inactive to stpclk# inactive 1 rtc 1 t15 cpu_stp# and pci_stp# float to clocks running 2 t16 pwrok active to cpu_stp# and pci_stp# active 1 rtc 1 t17 cpu_stp# and pci_stp# active to clocks stopped 2 t18 pwrok active to slp# active 0 ns 3 t18a pwrok active to stpclk# active 0 ns 3 t19 pwrok active to slp# inactive 1 2 rtc 1, 3 t19a pwrok active to stpclk# inactive 1 2 rtc 1, 3 notes: 1. these signals are controlled off an internal rtc clock. 1 rtc unit is approximately 32 s. 2. there are no specific requirements for these timings related to piix4. the system manufacturer should make sure that the clocks on power up meet any other system specifications. as a minimum, the clocks must be available and stable after time t30 shown in figure 22 . 3. these timings depend on the relative timings between rsmrst# and pwrok. if rsmrst# goes inactive 2 rtc periods before pwrok active, then slp# and stpclk# will remain inactive. if rsmrst# goes inactive less than 2 rtc periods before pwrok active, then an active pulse will be seen on slp# and stpclk#.
82371AB (piix4) e 238 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.6. power management s ignal timings (powered from piix4 main core well) figure 21 shows the timing relations for power management signals powered from the piix4 main core well. here the suspend well power active status signals (rsmrst#) transition before the application of core well power to piix4. t20 t26 t25 t27 t21 t22 t23 t24 running active float stopped rtc well power suspend well power rsmrst# core well power pwrok cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# corepwr2 figure 21 . core well power and pwrok activated signals (rsmrst# inactive before core well power applied)
e 82371AB (piix4) 239 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 41 . core well power and pwrok activated signals timings sym parameter min max unit notes t20 core well power and pwrok inactive to cpu_stp# and pci_stp# float 1 rtc 1 t21 core well power and pwrok inactive to pcirst# active 1 rtc 1 t22 core well power and pwrok inactive to cpurst active 1 rtc 1 t23 core well power and pwrok inactive to slp# active 1 rtc 1 t24 core well power and pwrok inactive to stpclk# active 1 rtc 1 t25 cpu_stp# and pci_stp# float to clocks running 2 t26 pwrok active to cpu_stp# and pci_stp# active 1 rtc 1 t27 cpu_stp# and pci_stp# active to clocks stopped 2 notes: 1. these signals are controlled off an internal rtc clock. 1 rtc unit is approximately 32 s. 2. there are no specific requirements for these timings related to piix4. the system manufacturer should make sure that the clocks on power up meet any other system specifications. as a minimum, the clocks must be available and stable after time t30 shown in figure 22 .
82371AB (piix4) e 240 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.7. mechanical off t o on condition timings figure 22 shows the transition from a mechanical off condition to the on condition. the signal states begin at the final states shown in figure 20 and figure 21 . t30 t31 t28 t29 t32 t33 running running inactive active stopped rsmrst# pwrok sus[a-c]# sus_stat[1-2]# susclk cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# mofftoon figure 22 . mechanical off to on
e 82371AB (piix4) 241 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 42 . mechanical off to on timings sym parameter min max unit notes t28 sus[a:c]# inactive to cpu_stp# and pci_stp# inactive 16 ms 1 t29 cpu_stp# and pci_stp# inactive to clocks running 2 pciclk 2 t30 cpu_stp# and pci_stp# inactive to sus_stat[1:2]# inactive 1 ms t31 sus_stat[1:2]# inactive to susclk running 1 rtc 3 t32 sus_stat[1:2]# inactive to pci_rst# inactive 1 rtc 3 t33 pci_rst# inactive to cpurst inactive 1 rtc 3 notes: 1. this transition requires both a minimum of 16-ms wait for clock synthesizer pll lock and pwrok to be active. if pwrok goes active after 16 ms from sus[a:c]# inactive, the transition will occur a minimum of 1 rtc period from pwrok active. 2. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs. 3. these signals are controlled off an internal rtc clock. 1 rtc unit is approximately 32 s.
82371AB (piix4) e 242 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.8. on state to power on suspend state timing this section describes the signal transitions from on state to power on suspend state. t36 t38 t37 t39 t35 t34 clocks runnin clocks stopped inactive pwro sus[a] sus[b- suscl pciclk / cpu cpurs slp stpclk ontopos figure 23 . on to pos
e 82371AB (piix4) 243 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 43 . on to pos timings sym parameter min max unit notes t34 cpu_stp# and pci_stp# inactive to stpclk# active 1 rtc 1, 2 t35 stpclk# active to slp# active 1 rtc 1, 3 t36 slp# active to sus_stat[1:2]# active 1 rtc 1 t37 sus_stat[1:2]# active to cpu_stp# and pci_stp# active 1 rtc 1 t38 cpu_stp# and pci_stp# active to sus[a]# active 1 rtc 1 t39 cpu_stp# and pci_stp# active to clocks stopped (if applicable) 2 pciclk 4, 5 notes: 1. these signals are controlled off an internal rtc clock. 1 rtc unit is approximately 32 s. 2. cpu_stp# and pci_stp# will only be active if system is under clock control. 3. this transition will also wait for the stop grant cycle to execute. 4. it is up to the system vendor to determine if cpu_stp# and pci_stp# signals are used to control system clocks. 5. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs.
82371AB (piix4) e 244 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.9. power on suspend to on timing (with a full system reset) this section describes the system transition from power on suspend to on with a full system reset. t47 t40 t45 t49 t46 t41 t48 t42 t50 t43 t44 clocks stopped clocks running running inactive active inactive resume event pwrok sus_stat[1-2]# sus[a]# sus[b-c]# susclk cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# postoon1 figure 24 . pos to on (w/processor & pci reset)
e 82371AB (piix4) 245 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 44 . pos to on (w/processor & pci reset) timings sym parameter min max unit notes t40 resume event to sus[a]# inactive 1 rtc 1 t41 resume event to pci_rst# active 1 rtc 1 t42 resume event to cpurst active 1 rtc 1 t43 resume event to slp# inactive 1 rtc 1 t44 resume event to stpclk# inactive 1 rtc 1 t45 sus[a]# inactive to pci_stp# and cpu_stp# inactive 16 ms 2 t46 pci_stp# and cpu_stp# inactive to clocks running 2 pciclk 3 t47 pci_stp# and cpu_stp# inactive to sus_stat[1:2]# inactive 1 ms t48 sus_stat[1:2]# inactive to pci_rst# inactive 1 rtc 1 t49 pci_rst# inactive to pci_stp#; cpu_stp# allowed to change 1 rtc 1 t50 pci_rst# inactive to cpurst inactive 1 rtc 1 notes: 1. these signals are controlled off an internal rtc clock. 1 rtc unit is approximately 32 s. 2. this transition requires both a minimum of 16-ms wait for clock synthesizer pll lock and pwrok to be active. if pwrok goes active after 16 ms from sus[a:c]# inactive, the transition will occur a minimum of 1 rtc period from pwrok active. pwrok remains active throughout standard pos system usage. 3. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs.
82371AB (piix4) e 246 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.10. system transition from power on suspend to on (with only processor reset) this section describes the system transition from power on suspend to on with only a processor reset. t57 t51 t55 t58 t56 t52 t59 t53 t54 clocks stopped clocks running running inactive active inactive resume event pwrok sus_stat[1-2]# sus[a]# sus[b-c]# susclk cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# postoon2 figure 25 . pos to on (w/processor reset)
e 82371AB (piix4) 247 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 45 . pos to on (w/processor reset) timings sym parameter min max unit notes t51 resume event to sus[a]# inactive 1 rtc 1 t52 resume event to cpurst active 1 rtc 1 t53 resume event to slp# inactive 1 rtc 1 t54 resume event to stpclk# inactive 1 rtc 1 t55 sus[a]# inactive to pci_stp# and cpu_stp# inactive 16 ms 2 t56 pci_stp# and cpu_stp# inactive to clocks running 2 pciclk 3 t57 pci_stp# and cpu_stp# inactive to sus_stat[1:2]# inactive 1 ms t58 sus_stat[1:2]# inactive to pci_stp# and cpu_stp# allowed to change 2 rtc 1 t59 sus_stat[1:2]# inactive to cpurst inactive 2 rtc 1 notes: 1. these signals are contro lled off an internal rtc clock. 1 rtc unit is approximately 32 s. 2. this transition requires both a minimum of 16-ms wait for clock synthesizer pll lock and pwrok to be active. if pwrok goes active after 16 ms from sus[a:c]# inactive, the transition will occur a minimum of 1 rtc period from pwrok active. pwrok remains active throughout standard pos system usage. 3. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs.
82371AB (piix4) e 248 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.11. power on suspend to on timing (with no resets) this section describes the system transition from power on suspend to on with no resets performed. t63 t60 t61 t64 t62 t65 t66 clocks stopped clocks running running inactive resume event pwrok sus_stat[1-2]# sus[a]# sus[b-c]# susclk cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# postoon3 figure 26 . pos to on (no reset)
e 82371AB (piix4) 249 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 46 . pos to on (w/processor reset) timings sym parameter min max unit notes t60 resume event to sus[a]# inactive 1 rtc 1 t61 sus[a]# inactive to pci_stp# and cpu_stp# inactive 16 ms 2 t62 pci_stp# and cpu_stp# inactive to clocks running 2 pciclk 3 t63 pci_stp# and cpu_stp# inactive to sus_stat[1:2]# inactive 1 ms t64 sus_stat[1:2]# inactive to pci_stp# and cpu_stp# allowed to change 2 rtc 1 t65 sus_stat[1:2]# inactive to slp# inactive 1 rtc 1 t66 slp# inactive to stpclk# inactive 1 rtc 1 notes: 1. these signals are controlled off the internal rtc clock. 1 rtc is approximately 32 s. 2. this transition requires both a minimum of 16-ms wait for clock synthesizer pll lock and pwrok to be active. if pwrok goes active after 16 ms from sus[a:c]# inactive, the transition will occur a minimum of 1 rtc period from pwrok active. pwrok remains active throughout standard pos system usage. 3. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs.
82371AB (piix4) e 250 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.12. on state to suspend to ram state timing t73 t80 t69 t72 t70 t74 t81 t71 t79 t75 t82 t76 t83 t68 t77 t84 t67 t78 t85 running invalid running stopped inactive active invalid invalid invalid invalid invalid float pwrok core well power sus_stat[1-2]# sus[a-b]# sus[c]# susclk cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# ontostr figure 27 . on to str
e 82371AB (piix4) 251 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 47 . on to str timings sym parameter min max unit notes t67 cpu_stp# and pci_stp# inactive to stpclk# active 1 rtc 1, 2 t68 stpclk# active to slp# active 1 rtc 1, 3 t69 slp# active to sus_stat[1:2]# active 1 rtc 1 t70 sus_stat[1:2]# active to cpu_stp# and pci_stp# active 1 rtc 1 t71 cpu_stp# and pci_stp# active to clocks stopped 2 pciclk 4, 5 t72 cpu_stp# and pci_stp# inactive to sus[a:b]# active 1 rtc 1 t73 sus[a:b]# active to pwrok inactive 0 ns 6 t74 pwrok inactive to cpu_stp# and pci_stp# float 1 rtc 1 t75 pwrok inactive to pci_rst# active 1 rtc 1 t76 pwrok inactive to cpurst active 1 rtc 1 t77 pwrok inactive to slp# inactive 1 rtc 1 t78 pwrok inactive to stpclk# inactive 1 rtc 1 t79 cpu_stp# and pci_stp# float to clocks invalid 0 ns 7 t80 pwrok inactive to core well power removed 0 ns t81 core well power removed to pci_stp# and cpu_stp# invalid 0 ns t82 core well power removed to pcirst# invalid 0 ns t83 core well power removed to cpurst invalid 0 ns t84 core well power removed to slp# invalid 0 ns t85 core well power removed to stpclk# invalid 0 ns notes: 1. these signals are controlled off the internal rtc clock. 1 rtc is approximately 32 s. 2. cpu_stp# and pci_stp# will only be active if system is under clock control. 3. this transition will also wait for the stop grant cycle to execute. 4. it is up to the system vendor to determine if cpu_stp# and pci_stp# signals are used to control system clocks. 5. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs. 6. it is up to the system vendor to determine if sus[a:b]# signals are used to control system power planes. if power remains applied to system board and pwrok stays active during str, the piix4 signals remain in the states shown after t73. 7. clocks may or may not be running depending on condition of power supply voltages.
82371AB (piix4) e 252 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.13. suspend-to-ram to on timing (with full system reset) this section describes the system transition from suspend to ram to on with a full system reset. t94 t87 t100 t86 t88 t95 t98 t97 t101 t93 t96 t99 t89 t101a t90 t102 t91 t92 invalid floa runnin invalid runnin invalid active inactive invalid invalid invalid runnin stopped resume event pwro core well sus[a- sus[c] suscl pciclk / cpu cpurs slp stpclk strtoon figure 28 . str to on
e 82371AB (piix4) 253 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 48 . str to on timings sym parameter min max unit notes t86 resume event to sus[a:b]# inactive 1 rtc 1 t87 sus[a:b]# inactive to core well power applied 0 ns t88 core well power applied to pci_stp# and cpu_stp# float 0 ns t89 core well power applied to pci_rst# active 0 ns t90 core well power applied to cpurst active 0 ns t91 core well power applied to slp# inactive 0 ns t92 core well power applied to stpclk# inactive 0 ns t93 pci_stp# and cpu_stp# float to clocks running 2 t94 core well power applied to pwrok active 1 ms t95 pwrok active to cpu_stp# and pci_stp# active 0 ns t96 pci_stp# and cpu_stp# active to clocks stopped 2 pciclk 3 t97 pwrok active to cpu_stp# and pci_stp# inactive 1 rtc 1 t98 sus[a:b]# inactive to cpu_stp# and pci_stp# inactive 16 ms t99 cpu_stp# and pci_stp# inactive to clocks running 2 pciclk 3 t100 cpu_stp# and pci_stp# inactive to sus_stat[1:2]# inactive 1 ms t101 sus_stat[1:2]# inactive to cpu_stp# and pci_stp# allowed to change 2 rtc 1 t101a sus_stat[1:2]# inactive to pci_rst# inactive 1 rtc 1 t102 pci_rst# inactive to cpurst inactive 1 rtc 1 notes: 1. these signals are controlled off the internal rtc clock. 1 rtc is approximately 32 s. 2. there are no specific requirements for these timings related t o piix4. the system manufacturer should make sure that the clocks on power up meet any other system specifications. as a minimum, the clocks must be available and stable after time t99. 3. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs.
82371AB (piix4) e 254 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.14. on state to suspend to disk/soft off state timings this section describes the signal transitions from on state to suspend to disk/soft off state. t110 t117 t105 t108 t109 t106 t111 t118 t107 t116 t112 t119 t113 t120 t104 t114 t121 t103 t115 t122 running invalid running stopped inactive active invalid invalid invalid invalid invalid float pwrok core well power sus_stat[1-2]# sus[a-c]# susclk cpu_stp# / pci_stp# pciclk / cpu clk pci_rst# cpurst slp# stpclk# ontostd figure 29 . on to std/soff
e 82371AB (piix4) 255 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 49 . on to std/soff timings sym parameter min max unit notes t103 cpu_stp# and pci_stp# inactive to stpclk# active 1 rtc 1, 2 t104 stpclk# active to slp# active 1 rtc 1, 3 t105 slp# active to sus_stat[1:2]# active 1 rtc 1 t106 sus_stat[1:2]# active to cpu_stp# and pci_stp# active 1 rtc 1 t107 cpu_stp# and pci_stp# inactive to clocks stopped 2 pciclk 1, 4, 5 t108 cpu_stp# and pci_stp# inactive to sus[a:c]# active 1 rtc 1 t109 sus[a:c]# active to susclk low 1 rtc 1 t110 sus[a:c]# active to pwrok inactive 0 ns 6 t111 pwrok inactive to cpu_stp# and pci_stp# float 1 rtc 1 t112 pwrok inactive to pci_rst# active 1 rtc 1 t113 pwrok inactive to cpurst active 1 rtc 1 t114 pwrok inactive to slp# inactive 1 rtc 1 t115 pwrok inactive to stpclk# inactive 1 rtc 1 t116 cpu_stp# and pci_stp# float to clocks invalid 0 ns 1 t117 pwrok inactive to core well power removed 0 ns t118 core well power removed to pci_stp# and cpu_stp# invalid 0 ns t119 core well power removed to pcirst# invalid 0 ns t120 core well power removed to cpurst invalid 0 ns t121 core well power removed to slp# invalid 0 ns t122 core well power removed to stpclk# invalid 0 ns notes: 1. these signals are controlled off the internal rtc clock. 1 rtc is approximately 32 s. 2. cpu_stp# and pci_stp# will only be active if system is under clock control. 3. this transition will also wait for the stop grant cy cle to execute. 4. it is up to the system vendor to determine if cpu_stp# and pci_stp# signals are used to control system clocks. 5. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs. 6. it is up to the system vendor to determine if sus[a:c]# signals are used to control system power planes. if power remains applied to system board and pwrok stays active during std, the piix4 signals remain in the states shown after t110.
82371AB (piix4) e 256 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.3.15. suspend-to-disk to on (with full system reset) this section describes the system transition from suspend to disk to on with a full system reset. t131 t124 t137 t123 t138 t125 t132 t135 t134 t140 t130 t133 t136 t126 t139 t127 t141 t128 t129 invalid float running invalid running invalid active inactive invalid invalid invalid running stopped resume event pwrok core well power sus[a-c]# susclk pciclk / cpu clk cpurst slp# stpclk# stdtoon figure 30 . std/soff to on
e 82371AB (piix4) 257 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 50 . std/soff to on timings sym parameter min max unit notes t123 resume event to sus[a:c]# inactive 1 rtc 1 t124 sus[a:c]# inactive to core well power applied 0 ns t125 core well power applied to pci_stp# and cpu_stp# float 0 ns t126 core well power applied to pci_rst# active 0 ns t127 core well power applied to cpurst active 0 ns t128 core well power applied to slp# inactive 0 ns t129 core well power applied to stpclk# inactive 0 ns t130 pci_stp# and cpu_stp# float to clocks running 2 t131 core well power applied to pwrok active 1 ms t132 pwrok active to cpu_stp# and pci_stp# active 0 ns t133 pci_stp# and cpu_stp# active to clocks stopped 2 pciclk 3 t134 sus[a:c]# inactive to cpu_stp# and pci_stp# inactive 16 ms t135 pwrok active to cpu_stp# and pci_stp# inactive 1 rtc 1 t136 pci_stp# and cpu_stp# active to clocks running 1 2 pciclk 3 t137 cpu_stp# and pci_stp# inactive to sus_stat[1:2]# inactive 1 ms t138 sus_stat[1:2]# inactive to susclk running 1 rtc 1 t139 sus_stat[1:2]# inactive to pci_rst# inactive 1 rtc 1 t140 sus_stat[1:2]# inactive to cpu_stp# and pci_stp# allowed to change 2 rtc 1 t141 pci_rst# inactive to cpurst inactive 1 rtc 1 notes: 1. these signals are controlled off the internal rtc clock. 1 rtc is approximately 32 s. 2. there are no specific requirements for these timings related to piix4. the system manufacturer should make sure that the clocks on power up meet any other system specifications. as a minimum, the clocks must be available and stable after time t136. 3. see figure 18 and figure 19 for exact pciclk requirements for use with pc/pci dma and serial irqs.
82371AB (piix4) e 258 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.4.4. shadow registers piix4 includes a shadow mechanism for storing the data written to the standard at write only registers. in the transition to suspend mode, the contents of these registers can be read and saved so the system state can be restored when resumed. once placed in the ? alternate access ? mode, various registers that would otherwise be inaccessible can be read and written. this allows a system to restore the configuration that was present in piix4 before going into a suspend state. to enable the alt access mode, set the following bit to 1: pci function 0, register b0h, bit 5. note no provisions are made for stopping events from occurring while the bios is reading or restoring register values. the bios should exercise great care in using this feature. for example, when reading the status of the dma controller, all the dma channels should be temporarily masked. the following tables show the changes to the read and write accesses associated with the various modules. when the alt access mode is enabled, some read and write cycles will cause alternative registers to be accessed. see the description for miscellaneous support register, pci function 2 (offset ffh) for details on saving and restoring the rtc index value. note it is assumed that no other accesses to the module will be permitted once in alt access mode. table 51 . dma controller registers in alternate access mode i/o location r/w standard mode usage alt access mode 0000h w base address for ch0 current address for ch0 0000h r current address for ch0 base address for ch0 0001h w base byte count for ch0 current byte count for ch0 0001h r current byte count for ch0 base byte count for ch0 0002h w base address for ch1 current address for ch1 0002h r current address for ch1 base address for ch1 0003h w base byte count for ch1 current byte count for ch1 0003h r current byte count for ch1 base byte count for ch1 0004h w base address for ch2 current address for ch2 0004h r current address for ch2 base address for ch2 0005h w base byte count for ch2 current byte count for ch2 0005h r current byte count for ch2 base byte count for ch2 0006h w base address for ch3 current address for ch3 0006h r current address for ch3 base address for ch3
e 82371AB (piix4) 259 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 51 . dma controller registers in alternate access mode i/o location r/w standard mode usage alt access mode 0007h w base byte count for ch3 current byte count for ch3 0007h r current byte count for ch3 base byte count for ch3 0008h w command register (ch[0:3]) status register (ch[0:3]) 0008h r status register (ch[0:3]) 1st read: command register (ch[0:3]) 2nd read: request register (ch[0:3]) 3rd read: mode register (ch0) 4th read: mode register (ch1) 5th read: mode register (ch2) 6th read: mode register (ch3) 0009h w request register (ch[0:3]) reserved 0009h r reserved reserved 000ah w write single mask (ch[0:3]) reserved 000ah r reserved reserved 000bh w mode register (ch[0:3]) reserved 000bh r reserved reserved 000ch w clear byte pointer clear byte pointer 000ch r reserved reserved 000dh w master clear master clear 000dh r reserved reserved 000eh w clear masks clear masks 000eh r reserved reserved 000fh w write all mask (0 ? 3) write all mask (0 ? 3) 000fh r reserved read all masks (0 ? 3) 00c0h w base address for ch4 current address for ch4 00c0h r current address for ch4 base address for ch4 00c2h w base word count for ch4 current word count for ch4 00c2h r current word count for ch4 base word count for ch4 00c4h w base address for ch5 current address for ch5 00c4h r current address for ch5 base address for ch5 00c6h w base word count for ch5 current word count for ch5 00c6h r current word count for ch5 base word count for ch5 00c8h w base address for ch6 current address for ch6
82371AB (piix4) e 260 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 51 . dma controller registers in alternate access mode i/o location r/w standard mode usage alt access mode 00c8h r current address for ch6 base address for ch6 00cah w base word count for ch6 current word count for ch6 00cah r current word count for ch6 base word count for ch6 00cch w base address for ch7 current address for ch7 00cch r current address for ch7 base address for ch7 00ceh w base word count for ch7 current word count for ch7 00ceh r current word count for ch7 base word count for ch7 00d0h w command register (ch[4:7]) status register (ch[4:7]) 00d0h r status register (ch[4:7]) 1st read: command register (ch[4:7]) 2nd read: request register (ch[4:7]) 3rd read: mode register (ch 4) 4th read: mode register (ch 5) 5th read: mode register (ch 6) 6th read: mode register (ch 7) 00d2h w request register (ch[4:7]) reserved 00d2h r reserved reserved 00d4h w write single mask (ch[4:7]) reserved 00d4h r reserved reserved 00d6h w mode register (ch[4:7]) reserved 00d6h r reserved reserved 00d8h w clear byte pointer clear byte pointer 00d8h r reserved reserved 00dah w master clear master clear 00dah r reserved reserved 00dch w clear masks clear masks 00dch r reserved reserved 00deh w write all mask (0 ? 3) write all mask (4 ? 7) 00deh r reserved read all masks (4 ? 7) notes: 1. this allows reading and restoring all of the initial base address and byte/word counts. also makes it possible to read command, mode, and mask registers, as well as restore status, mode, and mask register.
e 82371AB (piix4) 261 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 52 . nmi enable bit changes in alternate access mode i/o location r/w standard mode usage alt access mode 0070h (bit 7 only) r write only for nmi enable bit read bit enable bit table 53 . programmable interval timer changes in alternate access mode i/o location r/w standard mode usage alt access mode 0040h r status byte counter 0 1st read: status byte counter 0 2nd read: cr l for counter 0 3rd read: cr m for counter 0 4th read: cr l for counter 1 5th read: cr m for counter 1 6th read: cr l for counter 2 7th read: cr m for counter 2 0041h r status byte counter 1 status byte counter 1 0042h r status byte counter 2 status byte counter 2 the bios must perform seven consecutive reads from port 40h in alternate access mode. if bios deviates from this it may get inaccurate data. it also allows bios to set the alt access bit and still read the status of all the counters. setting the alt access mode automatically clears the high/low flip flop. when the alt access mode is entered the timers do not stop counting, hence the current values will change from the time the initial value is read. table 54 . programmable interrupt controller i/o location r/w standard mode usage alt access mode 0020h r interrupt request register for cntrl 1 1st read: icw1 for cntrl 1 2nd read: icw2 for cntrl 1 3rd read: icw3 for cntrl 1 4th read: icw4 for cntrl 1 5th read: ocw1 for cntrl 1 6th read: ocw2 for cntrl 1 7th read: ocw3 for cntrl 1 8th read: icw1 for cntrl 2 9th read: icw2 for cntrl 2 10th read: icw3 for cntrl 2 11th read: icw4 for cntrl 2 12th read: ocw1 for cntrl 2 13th read: ocw2 for cntrl 2 14th read: ocw3 for cntrl 2 0021h r in-service register for cntrl 1 in-service register for cntrl 1 00a0h r interrupt request register for cntrl 2 interrupt request register for cntrl 2 00a1h r in-service register for cntrl 2 in-service register for cntrl 2
82371AB (piix4) e 262 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.5. system management piix4?s system management capabilities include providing means to communicate system activities to system management software and to communicate with other devices on the system board. the first item is performed through the system management interrupt (smi) function while the second is done with a system management bus host and slave controller. 11.5.1. smi operation system management interrupts are generated to the processor through the assertion of the smi# signal. various system events, described below, will cause the smi# signal to be asserted if enabled. figure 31 shows the operation of smi generation logic. smi generation is enabled by setting the [smi_en] bit and controlled by the end of smi [eos] bit. the [eos] bit is first set to enable the generation of the first smi. when an enabled smi# generation event occurs, the eos bit is reset to 0. when this bit is cleared the smi# signal to the processor is asserted. the processor then enters system management mode (smm) and the smi handler services all requesting smis. if an smi event occurs while piix4 has this bit cleared, no additional smis to the processor are generated; however, the appropriate status bits are set. at the end of the smi handler, software sets this bit. when set, piix4 drives the smi# signal inactive for a minimum of 1 pci clock. the combination of this bit being set, and another smi request being active (one of the smi status bits is set) causes piix4 to reset [eos] bit again and re-assert the smi signal to the processor. note eos bit will not get set until all smi status bits are cleared. therefore, before exiting, the smi handler needs to verify that the bit is actually set. otherwise, there could be another pending smi that will prevent the eos bit from being set. in this case, the smi handler will need to clear that smi status bit and set the eos bit again. smi # = 0 smi # = 1 armed unarmed eos any enabled smi event smi_op figure 31 . smi operation
e 82371AB (piix4) 263 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.5.2. smi# generation eve nts some of the events can also generate the acpi compatible system control interrupt (sci) or suspend state resume events. the smi# or sci is selectable with the [sci_en] bit. when set to 1, these events generate an sci, if enabled. when reset, these events generate an smi#, if enabled. see the ? apic support ? section for additional details on acpi and sci. see the ? suspend/resume and power plane control ? section for additional details on system suspend and resume. when an event generates an smi# event, it sets a status bit. status bits from various sources are combined together ( ? ored ? ) to create hierarchical status bits. the hierarchical status bits cannot be reset by software. their respective ? children ? status bits must all be cleared in order for them to clear. pwrbtn# asserted: [pwrbtn_en] [pwrbtn_sts] [pwrbtnor_en] [pwrbtnor_sts] ? the pwrbtn# input signal can be used to generate an smi# upon its assertion. it contains a 16-ms debounce circuit to filter out mechanical switch bounce. when asserted, it will set the [pwrbtn_sts] bit after the 16-ms debounce. this will cause generation of an smi# if enabled. if the pwrbtn# signal is held active for greater than 4 seconds and power button override feature is enabled, the [pwrbtn_sts] bit is cleared, the [pwrbtnor_sts] bit is set, and piix4 will automatically transition the system into the soft off suspend state (see the ? suspend/resume and power plane control ? section for more detai ls on soft off suspend). this signal can also be used to generate an sci or a suspend state resume event. lid asserted: [lid_en] [lid_sts] ? polarity select: [lid_pol] ? the lid signal, when asserted, sets the [lid_sts] bit after a 16-ms debounce, and when enabled, generates an smi#. the assertion polarity can be controlled to allow system code to detect when lid signal transitions from low to high or high to low. this signal can also be used to generate an sci or a suspend state resume event. gpi1 asserted: [gpi_en] [gpi_sts] ? the gpi1 signal, when asserted low, will set the [gpi_sts] bit, and when enabled will generate an smi#. this signal can also be used to generate an sci or a suspend state resume event. extsmi# asserted: [extsmi_en] [extsmi_sts] ? the extsmi# signal, when asserted, will set the [extsmi_sts] bit, and when enabled will generate an smi#. this signal can also be used to generate a suspend state resume event. smbus events: [alert_en] [alert_sts] [slv_en] [slv_sts] [shdw1_en] [shdw1_sts] [shdw2_en] [shdw2_sts] ? the system management bus (smbus) controller has various means to generate an smi#. these can also be used to generate a suspend state resume events. see the ? smbus functional description ? section on page 265 for additional information.
82371AB (piix4) e 264 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary global standby timer expiration: [gstby_en] [gstby_sts] ? the global standby timer will set the [gstby_sts] bit upon expiration, and if enabled will generate an smi#. it can also be used to generate a suspend state resume events. see below for more information on global standby timer operation. pci bus master requests: [bm_trp_en] [bm_sts] ? assertion of pcireq[0:3] or phold#, signifying pci master activity will generate an smi# if enabled. this can also cause idle, burst, or global standby timer reloads as part of device 8 monitor logic. apmc control register write: [apmc_en] [apm_sts] ? writes to the apm control register (apmc, io port b2h) generate an smi#, if enabled. usb legacy keyboard/mouse : [legacy_u sb_en] [legacy_usb_sts] ? the usb legacy keyboard logic uses smi# generation as part of its operation. see the ? usb host controller functional description ? section and the ? universal host controller interface design guide ? document for additional information concerning usb legacy keyboard. the [legacy_usb_en] bit must be set active in order for usb legacy keyboard to function. software timer smi: [idl_en_dev3] [idl_sts_dev3] [idl_rld_en_dev3] ? the idle timer for device 3 monitoring can be used as a software smi timer. if the idle timer reload events are disabled (via [idl_rld_en_dev3] bit), the timer will count down without reload and its expiration will generate an smi#. see the ? peripheral device management ? section for more information on idle timer operation. device monitor trap: [trp_en_devx] [trp_sts_devx] x=0 ? 13 [dev_sts] ? the io traps for device monitoring subsystem generate an smi# when the programmed trap event occurs. the [dev_sts] bit is logical ? or ? of [trp_sts_devx] and [idl_sts_devx] bits. see the ? peripheral device management ? section for more information on device monitor idle timer operation. device monitor idle timer expiration: [idl_en_devx] [idl_sts_devx] x=0 ? 11 [dev_sts] ? the idle timers for device monitoring subsystem count down and generate an smi# upon expiration, if enabled. the [dev_sts] bit is logical ? or ? of [trp_sts_devx] and [idl_sts_devx] bits. see the ? peripheral device management ? section for more information on device monitor idle timer operation. piix4 master abort on pci [p4ma_en] [pm4a_sts] ? if enabled, a master abort to a piix4 initiated pci cycle will generate an smi#.
e 82371AB (piix4) 265 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary global release: [bios_en] [bios_sts] ? writes to the power management 1 control register (pm1_cntrl) with bit 2 set will generate an smi# if enabled. see the ? peripheral device management ? section for more information. thermal alarm (thrm# assertion): [thrm_en] [thrm_sts] ? polarity select: [thrm_pol] ? the thrm# signal will set the [thrm_sts] bit when asserted and if enabled will generate an smi#. the assertion polarity can be controlled to allow system code to detect when thrm# signal transitions from low to high or high to low. this signal can also be used to generate an sci. when asserted, the thrm# will also cause automatic clock throttling (see the ? clock control ? section for additional details). 11.5.3. global standby time r operation the global standby timer is used to monitor for global system activity during normal operation and can be reloaded by system activity events. when enabled, the timer loads and starts counting down. enabled system events cause the timer to reload its initial value and begin counting down again. if no system events reload the timer, it will eventually count to zero. upon this expiration, it generates an smi#. when the system is placed in a suspend mode, the global standby timer can also be used to generate a resume event. the global standby timer stops counting when the sm_freeze bit is set. this can be used to keep it from counting down when the system is executing an smi routine. the sm_freeze bit is disregarded while in a suspend state, so that the global standby timer counts down independent of sm_freeze value. global standby timer programming information: resolution: 32 second or 4 minute [gstby_sel] count: 7 bit [gstby_cnt] count and smi# enable: [gstby_en] expiration status: [gstby_sts] global standby timer reload events irq1, irq12/m: [grld_en_kbc_ms] nmi, init, irq[1,3:7,9:15]: [grld_en_irq] device 0 ? 13 monitors: [grld_en_devx] x=0 ? 13 video monitor (pci bus utilization): [video_en] pci bus master activity: [bm_rld_dev8] [grld_en_dev8]
82371AB (piix4) e 266 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.5.4. smbus functional de scription the system management bus (smbus) is a two-wire interface through which the system can communicate with simple power-related chips. with smbus, a device can provide manufacturer information, indicate its model/part number, save its state for a suspend event, report different types of errors, accept control parameters, and return status. piix4 provides a smbus host controller, host controller slave port, and two smbus slave shadow ports. the smbus host controller provides a mechanism for the processor to initiate communications with smbus peripherals. this can be used to configure system devices or to query devices for status. the smbus slave interface provides a mechanism for other smbus masters to communicate with piix4 and can be used to generate interrupts or resume events for a suspended system. piix4 also supports the smbus alert# protocol. piix4?s smbus controller has 3.3v input buffers, which requires the system?s smbus to be designed with a 3.3v termination voltage. the programming model is split between function 3 pci configuration registers and smbus i/o space registers. the system management bus is a subset of the phillips* i 2 c* protocol. smb host controller smb slave interface - host slave - shadow ports smbus figure 32 . smbus interface 11.5.4.1. smbus host interface a smbus host controller is used to send commands to various smbus devices. the piix4 smbus controller implements a full host controller implementation. the piix4 smbus controller supports seven command protocols of the smbus interface (see system management bus specification, revision 1.0 ): quick command, send byte, receive byte, write byte/word, read byte/word, block read, and block write. to execute a smbus host transaction, the type of transfer protocol, the address of smbus device, the device specific command, the data, and any control bits are first setup. then the start bit is set, which causes the host controller to execute the transaction. when the transaction is completed, piix4 generates an interrupt, if enabled. the interrupt can be selected between irq9 or smi#. the system software can wait for interrupt to signal completion or it can monitor the host_busy status bit. an interrupt is also signaled if an error occurred during the transaction or if the transaction was terminated by software setting the kill bit. the
e 82371AB (piix4) 267 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary smbhstcnt, smbhstcmd, smbhstadd, smbhstdat0, smbhstdat1, and smbblkdat registers should not be accessed after setting the start bit while the host_busy bit is active (until completion of transaction). the smbus controller will not respond to the start bit being set unless all interrupt status bits in the smbhststs register have been cleared. for block read or block write protocols, the data is stored in a 32-byte block data storage array. this array is addressed via an internal index pointer. the index pointer is initialized to zero on each read of the smbhstcnt register. after each access to the smbblkdat register, the index pointer is incremented by one. for block write transactions, the data to be transferred is stored in this array and the byte count is stored in smbhstdat0 register prior to initiating the transaction. for block read transactions, the smbus peripheral determines the amount of data transferred. after the transaction completes, the byte count transferred is located in smbhstdat0 register and data is stored in the block data storage array. accesses to the array during execution of the smbus transaction always start at address 0. any register values needed for computation purposes should be saved prior to the starting of a new transaction, as the smbus host controller updates the registers while executing the new transaction. 11.5.4.2. smbus slave interface piix4 supports three separate mechanisms for smbus peripherals to communicate to piix4. in addition to transferring data, these mechanisms can generate an interrupt or resume the system from a suspend state. the first mechanism consists of accesses to the smbus controller host slave port at address 10h. (note this address is actually 0001 000x as this is a 7-bit address (bits[7:1]) with bit 0 being r/w bit.) the host slave port responds to word write transactions only with the incoming data being stored in the smbslvdat register and incoming command in the smbshdwcmd register. an interrupt or resume event is generated (if enabled) if the incoming command matches the command stored in smbslvc register and at least one bit read into the smbslvdat register matches with the corresponding bit in the smbslvevt register. the second mechanism monitors for accesses to the smbus controller slave shadow ports at addresses stored in smbshdw1 and smbshdw2 registers. the shadow slave ports responds to word write transactions only with the incoming data being stored in the smbslvdat register and incoming command being stored in the smbshdwcmd register. an interrupt or resume event is generated (if enabled) when the slave shadow ports are accessed. the slv_bsy bit indicates that the piix4 slave interface is receiving an incoming message. the smbslvcnt, smbshdwcmd, smbslvevt, smbslvdat, and smbslvc registers should not be accessed while the slv_bsy bit is active (until completion of transaction). the third method for smbus devices to communicate with piix4 is with the smbalert# signal. when enabled and the smbalert# signal is asserted, piix4 generates an interrupt or resume the system from a suspend state. this simple mechanism allows a device without smbus master capabilities to request service from the smbus host (piix4). to determine which device asserted the smbalert# signal, the piix4 host controller should be programmed to execute a read command using the alert response address. once the slave interface has received a transaction and generated an interrupt, it will stop responding to new requests until all the interrupt status bits in the smbslvsts register are cleared.
82371AB (piix4) e 268 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 11.6. acpi support piix4 supports the acpi i/o register mapping, the sci interrupt and the power management timer. piix4 also supports a semaphore mechanism to coordinate access to the power management resources by either acpi or the bios. 11.6.1. sci generation the thrm#, gpi1#, lid, and pwrbtn# can be enabled to generate the acpi interrupt, sci (internal irq9) or an smi#. the smi# or sci is selectable with the [sci_en] bit. when set to 1, these events generate an sci, if enabled. when reset, these events generate an smi#, if enabled. see the ? system management ? section for additional details on smi and the thrm#, gpi1#, lid and pwrbtn# events. sci generation events pwrbtn# asserted: [pwrbtn_en] lid asserted: [lid_en] ? polarity select: [lid_pol] gpi1 asserted: [gpi_en] thermal alarm (thrm# assertion): [thrm_en] ? polarity select: [thrm_pol] power management timer expiration: [tmrof_en] bios release: [gbl_en] 11.6.2. power management ti mer a power management timer is used by the os to evaluate when the system is idle. the timer consists of a constantly running time base (14.31818 mhz/4 or 3.579545 mhz), a running time base value, and a single interrupt source (figure 33 ). the interrupt source indicates that the counter has changed bit 23 (high to low or low to high); this condition generates a system control interrupt (sci). the overflow interrupt is used by software to understand when the timer is about to overflow, and allows software to emulate a much larger timer. 24-bit counter bits [23:0] pm timer state machine pm1_sts.0 tmrof_en pm1_en.0 tmr_val pm1_tmr.[23:0] 3.579545 mhz 24 pwr_tim figure 33 . power management timer
e 82371AB (piix4) 269 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary power management timer programming information: clock frequency: 3.579545 mhz (14.31818 mhz/4 clock) start count: 24 bit [tmr_val] timer overflow status: [tmrof_sts] sci generation [tmrof_en] 11.6.3. global lock if the bios and acpi software share resources via a common i/o port, the global lock feature must be used as a semaphore to arbitrate access to these shared resources. for example, if both the bios and the acpi driver use the system management microcontroller control/status ports to manage the system, this access must be controlled using the global lock feature. in the event of a resource conflict, the global lock logic is used by the acpi driver to inform the bios driver that it is finished using a shared resource. the bios software accesses the gbl_rls bit to attempt to gain ownership of the lock. this access sets the bios_sts bit. acpi software releases the lock by setting the bios_en bit. piix4 then generates an smi which informs bios software that the shared resource is now available. likewise, if the acpi attempts to use the shared resources and there is a conflict, the global lock logic is used by the bios software to inform the acpi driver that it is finished using the shared resource. the acpi software accesses the bios_rls bit to attempt to gain ownership of the lock. this access sets the gbl_sts bit. bios software releases the lock by setting the gbl_en bit. piix4 then generates an sci which informs acpi software that the shared resource is now available.
82371AB (piix4) e 270 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 12. 0. pinout information m n p r t u v w y k l 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 a b c d e f g h j pcir- st# ad1 pcir- eqb# phld- a# sdd6 sdd4 sdd13 sddr- eq sdd- ack# sda2 pdd8 pdd7 ad27 idsel ad19 fra- me # serr# ad13 ad9 ad5 ad31 ad0 pcir- eqc# pho- ld# sdd9 sdd- 11 sdd1 sdi- ow# sda1 sdc- s1# pdd9 ad26 ad23 pdd6 ad18 irdy# par ad12 ad8 ad4 ad30 ad25 clk- run# pcir- eqd# sdd7 sdd5 sdd3 sdd14 sdi- or# sda0 sdc- s3# pdd10 pdd5 ad22 ad17 trdy# c/- be1# ad11 c/- be0# ad3 ad28 vss vss vss vss vss vss vss vss vss vss vss vss vss vss vss vss vss vss pci- clk sdd8 sdd2 sdd15 sio- rdy pdd- 12 pdd3 pdd- 11 pdd4 c/- be3# ad20 c/- be2# stop# ad14 ad10 ad6 ad2 ad29 ad24 ad21 pcir- eqa# vcc sdd12 sdd0 vcc pdd14 pdd1 pdd13 pdd2 ad16 dev- sel# ad15 vss ad7 vcc vcc vcc vcc vcc vcc vcc vcc vcc vcc vcc vcc usb- p1+ gpo- 28 pdi- ow# pdi- or# pdd- req pdd15 pdd0 gpo- 29 gpo- 30 pir- qd# usb- p0+ pio- rdy pda0 pda2 pda1 pdd- ack# gp1- 21 gpo- 0 gpo- 27 gpi- 18 usb p1- usb po- gpi- 19 gpi- 20 pdc- s3# pdc- s1# api- ccs# thrm# irq0 oc0# oc1# gpi- 14 nc nc nc nc nc vss (usb) kbc- cs# rtc- cs# gpi- 16 gpi- 17 vcc (usb) vref apic- ack# stp- clk# ser- irq irq1 zz spkr apic- req# ferr# slp# rtc- ale vcc (rtc) ign- ne# init intr nmi gpi- 13 pcs0# clk- 48 gpi- 15 req- a# bios- cs# xdir# xoe# nc rsm- rst# power ok cpu- rst a20- m# gnta# req- b# mccs# pcs1# vcc (sus) smbal- ert# rtcx1 rcin# a20- gate gnt- b# req- c# gnt- c# pir- qc# lid sus- clk ri# gpi- 1 smi# cpu_- stp# pci_- stp# pir- qa# pir- qb# vcc (sus) con- fig1 con- fig2 smb- clk rtc- x2 sd6 sd3 ioch- rdy iow# sa16 sys- clk sa9 irq3 sa4 sa1 la23 irq- 12/m la18 dack- 5# sd9 sus_ stat1# sus_ stat2# gpo- 8 smb- data irq9- out bale sa0 irq10 la20 dack- 0# mem- w# dre- q6 dre- q7 susc# bat- low# pwr- btn# sd2 sme- mw# sa18 dre- q3 dre- q1 sa11 irq5 sa6 sd7 dre- q2 sd0 sa19 dack- 3# sa14 sa12 irq6 sa7 tc osc iocs- 16# la21 irq14 mem- r# dack- 6# sd11 test# susb# ext- smi# rst- drv sd4 sd1 sme- mr# sa17 dack- 1# refr- esh# sa10 irq4 sa5 sa2 sbh- e# irq11 la19 dre- q0 sd8 dack- 7# sd13 sd15 susa# iochk# sd5 zero- ws# aen ior# sa15 sa13 irq7 sa8 dack- 2# sa3 mem- cs16# la22 irq15 la17 dre- q5 sd10 sd12 sd14 irq8# sdd10 pix4_pin note: for multiplexed pins, only one of the two signal names is shown in this figure. for example, the name for ? y20 ? only lists irq8#(instead of irq8#/gpi6). the pin list in table 55 includes both signal names for the multiplexed pins. figure 34 . piix4 pinout
e 82371AB (piix4) 271 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 55 . piix4 alphabetical pin list name pin ad0 b10 ad1 a10 ad10 d7 ad11 c7 ad12 b7 ad13 a7 ad14 d6 ad15 e6 ad16 e4 ad17 c4 ad18 b4 ad19 a4 ad2 d9 ad20 d3 ad21 e3 ad22 c3 ad23 b3 ad24 e2 ad25 c2 ad26 b2 ad27 a2 ad28 d1 ad29 e1 ad3 c9 ad30 c1 ad31 b1 ad4 b9 ad5 a9 ad6 d8 ad7 e8 ad8 b8 ad9 a8 apicack# j17 table 55 . piix4 alphabetical pin list name pin apiccs# h18 apicreq#/ gpi5 k18 aen y4 a20gate p1 a20m# m20 bale u10 batlow#/ gpi9 u19 bioscs# m2 c/be0# c8 c/be1# c6 c/be2# d4 c/be3# d2 clk48 l3 clkrun# c10 config1 r17 config2 r18 cpurst m19 cpu_stp# r1 dack0# u14 dack1# w6 dack2# y10 dack3# v5 dack5# t15 dack6# v16 dack7# w17 devsel# e5 dreq0 w15 dreq1 u6 dreq2 v2 dreq3 u5 dreq5 y16 dreq6 u16 table 55 . piix4 alphabetical pin list name pin dreq7 u17 extsmi# v20 ferr# k19 frame# a5 gnta# n1 gntb# p2 gntc# p4 gpi1 p19 gpi13 l2 gpi14 j3 gpi15 l5 gpi16 k3 gpi17 k4 gpi18 h1 gpi19 h4 gpi20 h5 gpi21 g3 gpo0 g4 gpo8 t19 gpo27 g5 gpo28 f2 gpo29 f3 gpo30 f4 idsel a3 ignne# l17 init l18 intr l19 iochk#/gpi0 y1 iochrdy t3 iocs16# v12 ior# y5 iow# t4 irdy# b5 table 55 . piix4 alphabetical pin list name pin irq0 h20 irq1 j20 irq3 t9 irq4 w9 irq5 u8 irq6 v8 irq7 y8 irq8#/gpi6 y20 irq9out/ gp029 u1 irq10 u12 irq11 w13 irq12/m t13 irq14 v14 irq15 y14 kbccs#/ gp026 k1 la17 y15 la18 t14 la19 w14 la20 u13 la21 v13 la22 y13 la23 t12 lid/gpi10 p16 mccs# n4 memcs16# y12 memr# v15 memw# u15 nmi l20 oc0# j1 oc1# j2 osc v11 par b6
82371AB (piix4) e 272 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 55 . piix4 alphabetical pin list name pin pciclk d11 pcireqa# e10 pcireqb# a11 pcireqc# b11 pcireqd# c11 pcirst# a1 pci_stp# r2 pcs0# l4 pcs1# n5 pda0 g16 pda1 g18 pda2 g17 pdcs1# h17 pdcs3# h16 pdd0 f20 pdd1 e18 pdd10 c19 pdd11 d19 pdd12 d17 pdd13 e19 pdd14 e17 pdd15 f19 pdd2 e20 pdd3 d18 pdd4 d20 pdd5 c20 pdd6 b20 pdd7 a20 pdd8 a19 pdd9 b19 pddack# g19 pddreq f18 pdior# f17 pdiow# f16 table 55 . piix4 alphabetical pin list name pin phold# b12 phlda# a12 piordy g20 pirqa# r3 pirqb# r4 pirqc# p5 pirqd# g1 pwrbtn# u20 pwrok m18 rcin# n20 ri#/gpi12 p18 rsmrst# m17 rtcale/ gp025 l1 rtccs#/ gp024 k2 rtcx1 n19 rtcx2 r20 refresh# w7 reqa#/gpi2 m1 reqb#/gpi3 n2 reqc#/gpi4 p3 rstdrv w1 sa0 u11 sa1 t11 sa10 w8 sa11 u7 sa12 v7 sa13 y7 sa14 v6 sa15 y6 sa16 t5 sa17 w5 sa18 u4 sa19 v4 table 55 . piix4 alphabetical pin list name pin sa2 w11 sa3 y11 sa4 t10 sa5 w10 sa6 u9 sa7 v9 sa8 y9 sa9 t8 sbhe# w12 sd0 v3 sd1 w3 sd10 y17 sd11 v17 sd12 y18 sd13 w18 sd14 y19 sd15 w19 sd2 u2 sd3 t2 sd4 w2 sd5 y2 sd6 t1 sd7 v1 sd8 w16 sd9 t16 sda0 c17 sda1 b17 sda2 a18 sdcs1# b18 sdcs3# c18 sdd0 e15 sdd1 b15 sdd10 d13 sdd11 b14 table 55 . piix4 alphabetical pin list name pin sdd12 e14 sdd13 a15 sdd14 c15 sdd15 d15 sdd2 d14 sdd3 c14 sdd4 a14 sdd5 c13 sdd6 a13 sdd7 c12 sdd8 d12 sdd9 b13 sddack# a17 sddreq a16 sdior# c16 sdiow# b16 serr# a6 siordy d16 serirq/gpi7 j19 slp# k20 smbalert#/ gpi11 n17 smbclk r19 smbdata t20 smemr# w4 smemw# u3 smi# p20 spkr k17 stop# d5 stpclk# j18 susa# w20 susb# v19 susc# u18 susclk p17
e 82371AB (piix4) 273 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 55 . piix4 alphabetical pin list name pin sus_stat1# t17 sus_stat2# t18 sysclk t7 tc v10 table 55 . piix4 alphabetical pin list name pin test# v18 thrm#/gpi8 h19 trdy# c5 usbp0+ g2 table 55 . piix4 alphabetical pin list name pin usbpo- h3 usbp1+ f1 usbp1- h2 xdir# m3 table 55 . piix4 alphabetical pin list name pin xoe# m4 zerows# y3 zz k16 table 56 . piix4 pin list (power, ground, and no connects) name ball v cc e9, e11, e12, e16, f5, f6, f14, f15, g6, p15, r6, r7, r15, t6 v cc (rtc) l16 v cc (sus) n16, r16 v cc (usb) k5 v ref j16 v ss d10, e7, e13, j[9:12], k[9:12], l[9:12], m[9:12] v ss (usb) j5 no connect pins j4, m5, m16, n3, n18, r5
82371AB (piix4) e 274 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 13. 0. piix4 package information this specification outlines the mechanical dimensions for piix4. the package is a 324-pin ball grid array (bga). top view pin #1 corner d1 d e e1 f pin #1 i.d. side view a1 a2 a c pkg324_1 figure 35 . piix4 324-pin ball grid array (bga)
e 82371AB (piix4) 275 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 a b c d e f g h j k l m n p r t u v w y e pin #1 corner 324 balls 20 x 20 matrix b j i e top view pkg324_2 figure 36 . piix4 324-pin ball grid array (bga) ball pattern
82371AB (piix4) e 276 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 57 . piix4 324-pin ball grid array (bga) symbol e=1.27 (solder ball pitch) min 1 nominal 1 max 1 a 1.90 (2.06) 2.09 (2.29) 2.30 (2.52) a1 0.50 0.60 0.70 a2 1.12 1.17 1.22 d 26.80 27.00 27.20 d1 24.00 24.70 e 26.80 27.00 27.20 e1 24.00 24.70 i 1.44 ref. j 1.44 ref. m 2 20 (depopulated) n 3 324 b 0.60 0.76 0.90 c 0.28 (0.44) 0.32 (0.52) 0.38 (0.60) f 8.05 ref. remark 2 layer (4 layer) 4 notes: 1. all dimensions are in millimeters. 2. ?m? represents the maximum solder ball matrix size. 3. ?n? represents the maximum allowable number of solder balls. 4. piix4 is currently shipping with only 2 layer substrate. there are currently no plans to ship 4 layer parts.
e 82371AB (piix4) 277 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 14. 0. testability 14.1. test mode description piix4 supports two types of test modes, a tri-state test mode and a nand tree test mode. table 58 lists irq decodes necessary to enter each test mode. the test modes are decoded from the irq inputs (irq[7:3]) and qualified with the test# pin. table 58 . test mode selection test mode irq7 irq6 irq5 irq4 irq3 test# no test mode selected 0 0 0 0 0 0 nand tree 1 0 0 0 0 1 0 nand tree 2 0 0 0 1 0 0 nand tree 3 0 0 0 1 1 0 nand tree 4 0 0 1 0 0 0 nand tree 5 0 0 1 0 1 0 all nand trees 1 1 1 1 1 0 tri-state all outputs 0 1 0 0 1 0 the entry into a test mode is shown in figure 37 . each test mode entry sequence is characterized by two active low pulses on the test pin. during the first active low pulse the desired test mode should be driven onto the irq lines. the test mode is latched into piix4 on the rising edge of the first test# pulse. the test mode is actually entered upon the rising edge of the second active low test# pulse. to change test modes, the same sequence should be followed again. to restore the piix4 to normal operation, execute the sequence with irq[7:3]=00000 (no test mode selected). test mode all output signals tri-stated nand tree output enabled test mode entered rsmrst# pwrok test# irq[7:3] other signal outputs testmode figure 37 . test mode entry (nand tree example)
82371AB (piix4) e 278 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary 14.2. tri-state mode when in the tri-state test mode, all outputs and bi-directional pins are tri-stated, including the nand tree outputs. 14.3. nand tree mode piix4 has five independent nand trees. each one can be enabled by itself or all five can be enabled at once. when a nand tree is enabled, all output and bi-directional buffers within that tree are tri-stated, except for the nand tree output. all output and bi-directional buffers for pins not in the selected nand tree are tri-stated. every output signal except for each nand tree?s output buffer is configured as an input and is included in the nand chain. table 60 ? table 64 on page 279 list each nand tree pin ordering, with the first value being the first input and the last value being the nand tree output. table 65 lists the signal pins not included in any nand tree. there are two methods for performing a nand tree test. 1. the first is to drive all nand tree input pins to 0. the output of the nand tree will be a 1. starting at the last signal in the nand tree (signal at bottom of list next to output), drive a 1 onto each signal, one at a time. the nand tree output will toggle on each input signal transitioned from 0 to 1. allow 500 ns for the input signals to propagate to the nand tree outputs (input-to-output propagation delay specification). 2. the second method works in reverse. drive all nand tree input pins to a 1. then starting at the first signal in the nand tree (signal at top of each list), drive a 0 onto each signal, one at a time. the nand tree output will toggle on each input signal transitioned from 1 to 0. allow 500 ns for the input signals to propagate to the nand tree outputs (input-to-output propagation delay specification).
e 82371AB (piix4) 279 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary figure 38 is a schematic of the nand tree circuitry. ad22 ad31 sd4 sa16 rtcale rtcale nand chain select nandtree figure 38 . nand tree circuitry (nand tree #1 example) table 59 . nand tree select pins pin name ball position notes test# v18 test mode latch signal. irq7 y8 test mode select signal. irq6 v8 test mode select signal. irq5 u8 test mode select signal. irq4 w9 test mode select signal. irq3 t9 test mode select signal.
82371AB (piix4) e 280 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 60 . nand tree #1 (irq[7:3]=00001) pin name ball position notes ad22 c03 ad31 b01 ad16 e04 ad25 c02 gpo27 g05 ad20 d03 ad30 c01 pcirst# a01 gpi20 h05 gpo30 f04 c/be3# d02 ad21 e03 gpo29 f03 ad28 d01 gpo0 g04 ad24 e02 gpi21 g03 gpi19 h04 gpo28 f02 ad29 e01 usbp0p g02 usbp0n h03 usbp1p f01 usbp1n h02 gpi14 j03 pirqd# g01 gpi18 h01 oc0# j01 gpi16 k03 oc1# j02 rtccs# k02 gpi17 k04 kbccs# k01 pcs0# l04 table 60. nand tree #1 (irq[7:3]=00001) (cont'd) pin name ball position notes gpi13 l02 gpi15 l05 bioscs# m02 xdir# m03 reqa# m01 reqb# n02 gnta# n01 xoe# m04 a20gate p01 gntb# p02 mccs# n04 reqc# p03 pcs1# n05 cpu_stp# r01 pci_stp# r02 gntc# p04 sd6 t01 pirqa# r03 irq9 u01 sd3 t02 pirqb# r04 sd2 u02 iochrdy t03 smemw# u03 pirqc# p05 sd7 v01 iow# t04 rstdrv w01 dreq2 v02 sa18 u04 sa16 t05 sd4 w02 rtcale l01 nand chain 1 output
e 82371AB (piix4) 281 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 61. nand tree #2 (irq[7:3]=00010) pin name ball position notes sd0 v03 sd5 y02 iochk# y01 sysclk t07 dreq3 u05 sd1 w03 sa19 v04 dreq1 u06 zerows# y03 sa9 t08 dack3# v05 sa14 v06 smemr# w04 sa11 u07 aen y04 sa17 w05 sa12 v07 irq5 u08 dack1# w06 ior# y05 refresh# w07 irq3 t09 irq6 v08 sa15 y06 sa10 w08 sa4 t10 sa6 u09 sa7 v09 sa13 y07 irq7 y08 irq4 w09 tc v10 sa8 y09 sa5 w10 bale u10 dack2# y10 sa0 u11 table 61. nand tree #2 (irq[7:3]=00010)(cont'd) pin name ball position notes sa2 w11 sa3 y11 sa1 t11 sbhe# w12 iocs16# v12 memcs16# y12 irq11 w13 la22 y13 la21 v13 irq10 u12 irq15 y14 la23 t12 la19 w14 la20 u13 irq14 v14 irq12 t13 la17 y15 dreq0 w15 dack0# u14 dreq5 y16 memr# v15 sd10 y17 memw# u15 sd8 w16 dack7# w17 dack6# v16 sd11 v17 la18 t14 sd12 y18 dreq6 u16 sd13 w18 dreq7 u17 sd14 y19 sd15 w19 sd9 t16 dack5# t15 nand chain 2 output
82371AB (piix4) e 282 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 62. nand tree #3 (irq[7:3]=00011) pin name ball position notes susa# w20 irq8# y20 susc# u18 sus_stat1# t17 lid p16 susb# v19 extsmi# v20 config1 r17 sus_stat2# t18 config2 r18 batlow# u19 susclk p17 pwrbtn# u20 ria# p18 smbalert# n17 smbclk r19 smbdata t20 gpi1 p19 gpo8 t19 nand chain 3 output table 63. nand tree #4 (irq[7:3]=00100) pin name ball position notes smi# p20 rcin# n20 cpurst m19 init l18 a20m# m20 intr l19 ignne# l17 nmi l20 apicreq# k18 ferr# k19 slp# k20 table 63. nand tree #4 (irq[7:3]=00100)(cont'd) pin name ball position notes zz k16 serirq j19 stpclk# j18 irq1 j20 thrm# h19 irq0 h20 apiccs# h18 apicack# j17 piordy g20 pddak# g19 pdcs1# h17 pda1 g18 pdcs3# h16 pdd0 f20 pdd15 f19 pda2 g17 pddrq f18 pdd2 e20 pdior# f17 pdd4 d20 pdd13 e19 pdd11 d19 pdd1 e18 pdd3 d18 pda0 g16 pdd5 c20 pdd14 e17 pdd10 c19 pdiow# f16 pdd12 d17 pdd6 b20 pdd9 b19 pdd8 a19 pdd7 a20 spkr k17 nand chain 4 output
e 82371AB (piix4) 283 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 64. nand tree #5 (irq[7:3]=00101) pin name ball position notes sdcs3# c18 sdd0 e15 sda0 c17 siordy d16 sdd12 e14 sdcs1# b18 sdd15 d15 sda2 a18 sdior# c16 sda1 b17 sdd14 c15 sdd2 d14 sddak# a17 sdiow# b16 sdd3 c14 sdd10 d13 sdd1 b15 sddrq a16 sdd11 b14 sdd5 c13 sdd13 a15 sdd9 b13 sdd8 d12 sdd7 c12 sdd4 a14 sdd6 a13 pcireqd# c11 phlda# a12 pcireqc# b11 pcireqb# a11 clockrun# c10 ad0 b10 ad1 a10 pcireqa# e10 table 64. nand tree #5 (irq[7:3]=00101)(cont'd) pin name ball position notes ad4 b09 ad3 c09 ad5 a09 ad8 b08 ad9 a08 c/be0# c08 ad2 d09 ad13 a07 ad12 b07 ad6 d08 ad11 c07 ad7 e08 serr# a06 par b06 frame# a05 ad10 d07 c/be1# c06 ad14 d06 ad19 a04 irdy# b05 ad18 b04 trdy# c05 ad17 c04 idsel a03 stop# d05 ad23 b03 ad15 e06 devsel# e05 ad27 a02 c/be2# d04 ad26 b02 phold# b12 nand chain 5 output
82371AB (piix4) e 284 4/9/97 2:23 pm piix4ads intel confidential (until publication date) preliminary table 65. signals not in nand tree pin name ball position notes clk48 l03 osc v11 test# v18 rtcx2 r20 rtcx1 n19 rsmrst# m17 pwrok m18 pciclk d11


▲Up To Search▲   

 
Price & Availability of 82371AB

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X